@tanstack/table-core 8.0.0-alpha.21 → 8.0.0-alpha.24
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/build/cjs/aggregationTypes.js +21 -19
- package/build/cjs/aggregationTypes.js.map +1 -1
- package/build/cjs/core.js +8 -8
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/features/Expanding.js +1 -8
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +1 -1
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +1 -1
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Pinning.js +6 -0
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +3 -3
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/utils/columnFilterRowsFn.js +20 -78
- package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +100 -0
- package/build/cjs/utils/filterRowsUtils.js.map +1 -0
- package/build/cjs/utils/globalFilterRowsFn.js +10 -62
- package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
- package/build/cjs/utils/groupRowsFn.js +15 -15
- package/build/cjs/utils/groupRowsFn.js.map +1 -1
- package/build/cjs/utils/sortRowsFn.js +1 -1
- package/build/cjs/utils/sortRowsFn.js.map +1 -1
- package/build/esm/index.js +163 -193
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +305 -272
- package/build/types/aggregationTypes.d.ts +9 -9
- package/build/types/core.d.ts +1 -1
- package/build/types/features/Filters.d.ts +1 -1
- package/build/types/features/Grouping.d.ts +1 -1
- package/build/types/features/Pinning.d.ts +1 -0
- package/build/types/utils/filterRowsUtils.d.ts +3 -0
- package/build/types/utils/sortRowsQuicksortFn.d.ts +11 -0
- package/build/umd/index.development.js +163 -193
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/aggregationTypes.ts +23 -19
- package/src/core.tsx +3 -5
- package/src/features/Expanding.ts +2 -10
- package/src/features/Filters.ts +2 -2
- package/src/features/Grouping.ts +3 -4
- package/src/features/Pinning.ts +7 -0
- package/src/features/RowSelection.ts +1 -3
- package/src/utils/columnFilterRowsFn.ts +12 -73
- package/src/utils/filterRowsUtils.ts +107 -0
- package/src/utils/globalFilterRowsFn.ts +10 -66
- package/src/utils/groupRowsFn.ts +14 -16
- package/src/utils/sortRowsFn.ts +6 -8
- package/src/utils/sortRowsQuicksortFn.ts +174 -0
package/build/esm/index.js
CHANGED
|
@@ -382,18 +382,18 @@ var aggregationTypes = {
|
|
|
382
382
|
count: count
|
|
383
383
|
};
|
|
384
384
|
|
|
385
|
-
function sum(
|
|
385
|
+
function sum(_getLeafValues, getChildValues) {
|
|
386
386
|
// It's faster to just add the aggregations together instead of
|
|
387
387
|
// process leaf nodes individually
|
|
388
|
-
return
|
|
388
|
+
return getChildValues().reduce(function (sum, next) {
|
|
389
389
|
return sum + (typeof next === 'number' ? next : 0);
|
|
390
390
|
}, 0);
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
-
function min(
|
|
393
|
+
function min(_getLeafValues, getChildValues) {
|
|
394
394
|
var min;
|
|
395
395
|
|
|
396
|
-
for (var _iterator = _createForOfIteratorHelperLoose(
|
|
396
|
+
for (var _iterator = _createForOfIteratorHelperLoose(getChildValues()), _step; !(_step = _iterator()).done;) {
|
|
397
397
|
var value = _step.value;
|
|
398
398
|
|
|
399
399
|
if (value != null && (min > value || min === undefined && value >= value)) {
|
|
@@ -404,10 +404,10 @@ function min(_leafValues, childValues) {
|
|
|
404
404
|
return min;
|
|
405
405
|
}
|
|
406
406
|
|
|
407
|
-
function max(
|
|
407
|
+
function max(_getLeafValues, getChildValues) {
|
|
408
408
|
var max;
|
|
409
409
|
|
|
410
|
-
for (var _iterator2 = _createForOfIteratorHelperLoose(
|
|
410
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(getChildValues()), _step2; !(_step2 = _iterator2()).done;) {
|
|
411
411
|
var value = _step2.value;
|
|
412
412
|
|
|
413
413
|
if (value != null && (max < value || max === undefined && value >= value)) {
|
|
@@ -418,11 +418,11 @@ function max(_leafValues, childValues) {
|
|
|
418
418
|
return max;
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
function extent(
|
|
421
|
+
function extent(_getLeafValues, getChildValues) {
|
|
422
422
|
var min;
|
|
423
423
|
var max;
|
|
424
424
|
|
|
425
|
-
for (var _iterator3 = _createForOfIteratorHelperLoose(
|
|
425
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(getChildValues()), _step3; !(_step3 = _iterator3()).done;) {
|
|
426
426
|
var value = _step3.value;
|
|
427
427
|
|
|
428
428
|
if (value != null) {
|
|
@@ -438,11 +438,11 @@ function extent(_leafValues, childValues) {
|
|
|
438
438
|
return [min, max];
|
|
439
439
|
}
|
|
440
440
|
|
|
441
|
-
function mean(
|
|
441
|
+
function mean(getLeafValues) {
|
|
442
442
|
var count = 0;
|
|
443
443
|
var sum = 0;
|
|
444
444
|
|
|
445
|
-
for (var _iterator4 = _createForOfIteratorHelperLoose(
|
|
445
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose(getLeafValues()), _step4; !(_step4 = _iterator4()).done;) {
|
|
446
446
|
var value = _step4.value;
|
|
447
447
|
|
|
448
448
|
if (value != null && (value = +value) >= value) {
|
|
@@ -454,14 +454,16 @@ function mean(leafValues) {
|
|
|
454
454
|
return;
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
-
function median(
|
|
458
|
-
|
|
457
|
+
function median(getLeafValues) {
|
|
458
|
+
var leafValues = getLeafValues();
|
|
459
|
+
|
|
460
|
+
if (!leafValues.length) {
|
|
459
461
|
return;
|
|
460
462
|
}
|
|
461
463
|
|
|
462
464
|
var min = 0;
|
|
463
465
|
var max = 0;
|
|
464
|
-
|
|
466
|
+
leafValues.forEach(function (value) {
|
|
465
467
|
if (typeof value === 'number') {
|
|
466
468
|
min = Math.min(min, value);
|
|
467
469
|
max = Math.max(max, value);
|
|
@@ -470,16 +472,16 @@ function median(values) {
|
|
|
470
472
|
return (min + max) / 2;
|
|
471
473
|
}
|
|
472
474
|
|
|
473
|
-
function unique(
|
|
474
|
-
return Array.from(new Set(
|
|
475
|
+
function unique(getLeafValues) {
|
|
476
|
+
return Array.from(new Set(getLeafValues()).values());
|
|
475
477
|
}
|
|
476
478
|
|
|
477
|
-
function uniqueCount(
|
|
478
|
-
return new Set(
|
|
479
|
+
function uniqueCount(getLeafValues) {
|
|
480
|
+
return new Set(getLeafValues()).size;
|
|
479
481
|
}
|
|
480
482
|
|
|
481
|
-
function count(
|
|
482
|
-
return
|
|
483
|
+
function count(getLeafValues) {
|
|
484
|
+
return getLeafValues().length;
|
|
483
485
|
}
|
|
484
486
|
|
|
485
487
|
//
|
|
@@ -562,7 +564,7 @@ var Grouping = {
|
|
|
562
564
|
throw new Error();
|
|
563
565
|
}
|
|
564
566
|
|
|
565
|
-
return isFunction(column.aggregationType) ? column.aggregationType : column.aggregationType === 'auto' ? instance.
|
|
567
|
+
return isFunction(column.aggregationType) ? column.aggregationType : column.aggregationType === 'auto' ? instance.getColumnAutoAggregationFn(columnId) : (_ref = userAggregationTypes == null ? void 0 : userAggregationTypes[column.aggregationType]) != null ? _ref : aggregationTypes[column.aggregationType];
|
|
566
568
|
},
|
|
567
569
|
setGrouping: function setGrouping(updater) {
|
|
568
570
|
return instance.options.onGroupingChange == null ? void 0 : instance.options.onGroupingChange(updater, functionalUpdate(updater, instance.getState().grouping));
|
|
@@ -893,6 +895,12 @@ var Pinning = {
|
|
|
893
895
|
|
|
894
896
|
var position = instance.getColumnIsPinned(columnId);
|
|
895
897
|
return position ? (_instance$getState$co2 = (_instance$getState$co3 = instance.getState().columnPinning) == null ? void 0 : (_instance$getState$co4 = _instance$getState$co3[position]) == null ? void 0 : _instance$getState$co4.indexOf(columnId)) != null ? _instance$getState$co2 : -1 : 0;
|
|
898
|
+
},
|
|
899
|
+
getIsSomeColumnsPinned: function getIsSomeColumnsPinned() {
|
|
900
|
+
var _instance$getState$co5 = instance.getState().columnPinning,
|
|
901
|
+
left = _instance$getState$co5.left,
|
|
902
|
+
right = _instance$getState$co5.right;
|
|
903
|
+
return Boolean((left == null ? void 0 : left.length) || (right == null ? void 0 : right.length));
|
|
896
904
|
}
|
|
897
905
|
};
|
|
898
906
|
}
|
|
@@ -1977,7 +1985,7 @@ var Filters = {
|
|
|
1977
1985
|
onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
|
|
1978
1986
|
onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
|
|
1979
1987
|
autoResetColumnFilters: true,
|
|
1980
|
-
|
|
1988
|
+
filterFromLeafRows: true,
|
|
1981
1989
|
autoResetGlobalFilter: true,
|
|
1982
1990
|
globalFilterType: 'auto',
|
|
1983
1991
|
getColumnCanGlobalFilterFn: function getColumnCanGlobalFilterFn(column) {
|
|
@@ -2964,14 +2972,7 @@ var Expanding = {
|
|
|
2964
2972
|
return row.subRows && !!row.subRows.length;
|
|
2965
2973
|
},
|
|
2966
2974
|
getToggleExpandedProps: function getToggleExpandedProps(userProps) {
|
|
2967
|
-
|
|
2968
|
-
title: 'Toggle Row Expanded',
|
|
2969
|
-
onClick: function onClick(e) {
|
|
2970
|
-
e.stopPropagation();
|
|
2971
|
-
instance.toggleRowExpanded(row.id);
|
|
2972
|
-
}
|
|
2973
|
-
};
|
|
2974
|
-
return propGetter(initialProps, userProps);
|
|
2975
|
+
return instance.getToggleExpandedProps(row.id, userProps);
|
|
2975
2976
|
}
|
|
2976
2977
|
};
|
|
2977
2978
|
}
|
|
@@ -3198,10 +3199,10 @@ var RowSelection = {
|
|
|
3198
3199
|
},
|
|
3199
3200
|
toggleAllRowsSelected: function toggleAllRowsSelected(value) {
|
|
3200
3201
|
instance.setRowSelection(function (old) {
|
|
3201
|
-
value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
|
|
3202
|
-
|
|
3202
|
+
value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
|
|
3203
|
+
|
|
3204
|
+
var rowSelection = _extends({}, old);
|
|
3203
3205
|
|
|
3204
|
-
var rowSelection = Object.assign({}, old);
|
|
3205
3206
|
var preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
|
|
3206
3207
|
// All of the rows are flat already, so it wouldn't be worth it
|
|
3207
3208
|
|
|
@@ -3945,7 +3946,11 @@ function createTableInstance(options) {
|
|
|
3945
3946
|
depth: depth,
|
|
3946
3947
|
values: values,
|
|
3947
3948
|
subRows: [],
|
|
3948
|
-
|
|
3949
|
+
getLeafRows: function getLeafRows() {
|
|
3950
|
+
return flattenBy(row.subRows, function (d) {
|
|
3951
|
+
return d.subRows;
|
|
3952
|
+
});
|
|
3953
|
+
},
|
|
3949
3954
|
getRowProps: function getRowProps(userProps) {
|
|
3950
3955
|
return instance.getRowProps(row.id, userProps);
|
|
3951
3956
|
},
|
|
@@ -4039,13 +4044,9 @@ function createTableInstance(options) {
|
|
|
4039
4044
|
|
|
4040
4045
|
for (var _i = 0; _i < row.originalSubRows.length; _i++) {
|
|
4041
4046
|
accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
|
|
4042
|
-
}
|
|
4043
|
-
|
|
4047
|
+
}
|
|
4044
4048
|
|
|
4045
4049
|
row.subRows = subRows;
|
|
4046
|
-
row.leafRows = flattenBy(subRows, function (d) {
|
|
4047
|
-
return d.leafRows;
|
|
4048
|
-
});
|
|
4049
4050
|
}
|
|
4050
4051
|
}
|
|
4051
4052
|
};
|
|
@@ -4067,9 +4068,9 @@ function createTableInstance(options) {
|
|
|
4067
4068
|
return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugTable;
|
|
4068
4069
|
},
|
|
4069
4070
|
onChange: function onChange() {
|
|
4070
|
-
instance._notifyRowSelectionReset();
|
|
4071
|
-
|
|
4072
4071
|
instance._notifyFiltersReset();
|
|
4072
|
+
|
|
4073
|
+
instance._notifyRowSelectionReset();
|
|
4073
4074
|
}
|
|
4074
4075
|
}),
|
|
4075
4076
|
// The final calls start at the bottom of the model,
|
|
@@ -4237,126 +4238,147 @@ function _createTable(_, __, __options) {
|
|
|
4237
4238
|
};
|
|
4238
4239
|
}
|
|
4239
4240
|
|
|
4240
|
-
function
|
|
4241
|
-
var columnFilters = instance.getState().columnFilters;
|
|
4241
|
+
function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
|
|
4242
4242
|
var newFilteredFlatRows = [];
|
|
4243
4243
|
var newFilteredRowsById = {};
|
|
4244
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
4245
4244
|
|
|
4246
|
-
var
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4250
|
-
// Find the columnFilters column
|
|
4251
|
-
var column = instance.getColumn(columnId);
|
|
4245
|
+
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4246
|
+
if (depth === void 0) {
|
|
4247
|
+
depth = 0;
|
|
4248
|
+
}
|
|
4252
4249
|
|
|
4253
|
-
|
|
4254
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
4255
|
-
console.warn("Table: Could not find a column with id: " + columnId);
|
|
4256
|
-
}
|
|
4250
|
+
rowsToFilter = rowsToFilter.slice(); // Filter from children up first
|
|
4257
4251
|
|
|
4258
|
-
|
|
4259
|
-
|
|
4252
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
4253
|
+
var _row$subRows;
|
|
4260
4254
|
|
|
4261
|
-
|
|
4262
|
-
var preFilteredRows = [].concat(rowsToFilter);
|
|
4255
|
+
var row = rowsToFilter[i];
|
|
4263
4256
|
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
};
|
|
4257
|
+
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4258
|
+
continue;
|
|
4267
4259
|
}
|
|
4268
4260
|
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
if (!filterFn) {
|
|
4272
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
4273
|
-
console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
|
|
4274
|
-
}
|
|
4261
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
4262
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4275
4263
|
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4264
|
+
if (!rowsToFilter[i].subRows.length) {
|
|
4265
|
+
rowsToFilter.splice(i, 1);
|
|
4266
|
+
i--;
|
|
4267
|
+
}
|
|
4268
|
+
}
|
|
4279
4269
|
|
|
4270
|
+
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4280
4271
|
|
|
4281
|
-
|
|
4272
|
+
rowsToFilter.forEach(function (row) {
|
|
4273
|
+
newFilteredFlatRows.push(row);
|
|
4274
|
+
newFilteredRowsById[row.id] = row;
|
|
4282
4275
|
});
|
|
4283
4276
|
return rowsToFilter;
|
|
4284
4277
|
};
|
|
4285
4278
|
|
|
4286
|
-
|
|
4287
|
-
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4297
|
-
return true;
|
|
4298
|
-
}
|
|
4299
|
-
|
|
4300
|
-
row.subRows = _recurseFilterRows(row.subRows, depth + 1);
|
|
4301
|
-
return row.subRows.length;
|
|
4302
|
-
});
|
|
4303
|
-
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4304
|
-
|
|
4305
|
-
rowsToFilter.forEach(function (row) {
|
|
4306
|
-
newFilteredFlatRows.push(row);
|
|
4307
|
-
newFilteredRowsById[row.id] = row;
|
|
4308
|
-
});
|
|
4309
|
-
return rowsToFilter;
|
|
4310
|
-
};
|
|
4311
|
-
|
|
4312
|
-
return {
|
|
4313
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
4314
|
-
flatRows: newFilteredFlatRows,
|
|
4315
|
-
rowsById: newFilteredRowsById
|
|
4316
|
-
};
|
|
4317
|
-
} // Filters top level and nested rows
|
|
4318
|
-
|
|
4279
|
+
return {
|
|
4280
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
4281
|
+
flatRows: newFilteredFlatRows,
|
|
4282
|
+
rowsById: newFilteredRowsById
|
|
4283
|
+
};
|
|
4284
|
+
}
|
|
4285
|
+
function filterRowModelFromRoot(rowsToFilter, filterRows, instance) {
|
|
4286
|
+
var newFilteredFlatRows = [];
|
|
4287
|
+
var newFilteredRowsById = {}; // Filters top level and nested rows
|
|
4319
4288
|
|
|
4320
4289
|
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4321
4290
|
if (depth === void 0) {
|
|
4322
4291
|
depth = 0;
|
|
4323
4292
|
}
|
|
4324
4293
|
|
|
4325
|
-
// Filter from parents downward
|
|
4294
|
+
// Filter from parents downward first
|
|
4326
4295
|
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4327
|
-
// We technically could do this recursively in the above loop,
|
|
4328
|
-
// but that would severely hinder the API for the user, since they
|
|
4329
|
-
// would be required to do that recursion in some scenarios
|
|
4330
4296
|
|
|
4331
|
-
rowsToFilter.
|
|
4297
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
4298
|
+
var _row$subRows2;
|
|
4299
|
+
|
|
4300
|
+
var row = rowsToFilter[i];
|
|
4332
4301
|
newFilteredFlatRows.push(row);
|
|
4333
4302
|
newFilteredRowsById[row.id] = row;
|
|
4334
4303
|
|
|
4335
|
-
if (!
|
|
4336
|
-
|
|
4304
|
+
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
4305
|
+
rowsToFilter.splice(i, 1);
|
|
4306
|
+
i--;
|
|
4307
|
+
continue;
|
|
4308
|
+
}
|
|
4337
4309
|
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4310
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
4311
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4312
|
+
}
|
|
4341
4313
|
|
|
4342
|
-
row.subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4343
|
-
}
|
|
4344
|
-
});
|
|
4345
4314
|
return rowsToFilter;
|
|
4346
4315
|
};
|
|
4347
4316
|
|
|
4348
4317
|
return {
|
|
4349
|
-
rows: recurseFilterRows(
|
|
4318
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
4350
4319
|
flatRows: newFilteredFlatRows,
|
|
4351
4320
|
rowsById: newFilteredRowsById
|
|
4352
4321
|
};
|
|
4353
4322
|
}
|
|
4354
4323
|
|
|
4324
|
+
function columnFilterRowsFn(instance, rowModel) {
|
|
4325
|
+
var columnFilters = instance.getState().columnFilters;
|
|
4326
|
+
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
4327
|
+
|
|
4328
|
+
var filterRows = function filterRows(rowsToFilter, depth) {
|
|
4329
|
+
for (var i = 0; i < columnFilters.length; i++) {
|
|
4330
|
+
var _columnFilters$i = columnFilters[i],
|
|
4331
|
+
columnId = _columnFilters$i.id,
|
|
4332
|
+
filterValue = _columnFilters$i.value; // Find the columnFilters column
|
|
4333
|
+
|
|
4334
|
+
var column = instance.getColumn(columnId);
|
|
4335
|
+
|
|
4336
|
+
if (!column) {
|
|
4337
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
4338
|
+
console.warn("Table: Could not find a column with id: " + columnId);
|
|
4339
|
+
}
|
|
4340
|
+
|
|
4341
|
+
throw new Error();
|
|
4342
|
+
}
|
|
4343
|
+
|
|
4344
|
+
if (depth === 0) {
|
|
4345
|
+
(function () {
|
|
4346
|
+
var preFilteredRows = [].concat(rowsToFilter);
|
|
4347
|
+
|
|
4348
|
+
column.getPreFilteredRows = function () {
|
|
4349
|
+
return preFilteredRows;
|
|
4350
|
+
};
|
|
4351
|
+
})();
|
|
4352
|
+
}
|
|
4353
|
+
|
|
4354
|
+
var filterFn = instance.getColumnFilterFn(column.id);
|
|
4355
|
+
|
|
4356
|
+
if (!filterFn) {
|
|
4357
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
4358
|
+
console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
|
|
4359
|
+
}
|
|
4360
|
+
|
|
4361
|
+
continue;
|
|
4362
|
+
} // Pass the rows, id, filterValue and column to the filterFn
|
|
4363
|
+
// to get the filtered rows back
|
|
4364
|
+
|
|
4365
|
+
|
|
4366
|
+
rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
|
|
4367
|
+
}
|
|
4368
|
+
|
|
4369
|
+
return rowsToFilter;
|
|
4370
|
+
};
|
|
4371
|
+
|
|
4372
|
+
if (filterFromLeafRows) {
|
|
4373
|
+
return filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
4374
|
+
}
|
|
4375
|
+
|
|
4376
|
+
return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
4377
|
+
}
|
|
4378
|
+
|
|
4355
4379
|
function globalFilterRowsFn(instance, rowModel) {
|
|
4356
4380
|
var globalFilter = instance.getState().globalFilter;
|
|
4357
|
-
var
|
|
4358
|
-
var newFilteredRowsById = {};
|
|
4359
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
4381
|
+
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
4360
4382
|
var filterFn = instance.getGlobalFilterFn();
|
|
4361
4383
|
|
|
4362
4384
|
if (!filterFn) {
|
|
@@ -4374,67 +4396,15 @@ function globalFilterRowsFn(instance, rowModel) {
|
|
|
4374
4396
|
return d.id;
|
|
4375
4397
|
});
|
|
4376
4398
|
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
// Filter from children up
|
|
4381
|
-
rowsToFilter = rowsToFilter.filter(function (row) {
|
|
4382
|
-
var _row$subRows;
|
|
4383
|
-
|
|
4384
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4385
|
-
return true;
|
|
4386
|
-
}
|
|
4387
|
-
|
|
4388
|
-
row.subRows = _recurseFilterRows(row.subRows);
|
|
4389
|
-
return row.subRows.length;
|
|
4390
|
-
});
|
|
4391
|
-
rowsToFilter = filterFn(rowsToFilter, filterableColumnIds, globalFilter); // Apply the filter to any subRows
|
|
4392
|
-
|
|
4393
|
-
rowsToFilter.forEach(function (row) {
|
|
4394
|
-
newFilteredFlatRows.push(row);
|
|
4395
|
-
newFilteredRowsById[row.id] = row;
|
|
4396
|
-
});
|
|
4397
|
-
return rowsToFilter;
|
|
4398
|
-
};
|
|
4399
|
-
|
|
4400
|
-
return {
|
|
4401
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
4402
|
-
flatRows: newFilteredFlatRows,
|
|
4403
|
-
rowsById: newFilteredRowsById
|
|
4404
|
-
};
|
|
4405
|
-
} // Filters top level and nested rows
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4409
|
-
|
|
4410
|
-
// Filter from parents downward
|
|
4411
|
-
rowsToFilter = filterFn(rowsToFilter, filterableColumnIds, globalFilter); // Apply the filter to any subRows
|
|
4412
|
-
// We technically could do this recursively in the above loop,
|
|
4413
|
-
// but that would severely hinder the API for the user, since they
|
|
4414
|
-
// would be required to do that recursion in some scenarios
|
|
4415
|
-
|
|
4416
|
-
rowsToFilter.forEach(function (row) {
|
|
4417
|
-
newFilteredFlatRows.push(row);
|
|
4418
|
-
newFilteredRowsById[row.id] = row;
|
|
4419
|
-
|
|
4420
|
-
if (!filterFromChildrenUp) {
|
|
4421
|
-
var _row$subRows2;
|
|
4422
|
-
|
|
4423
|
-
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
4424
|
-
return;
|
|
4425
|
-
}
|
|
4426
|
-
|
|
4427
|
-
row.subRows = recurseFilterRows(row.subRows);
|
|
4428
|
-
}
|
|
4429
|
-
});
|
|
4430
|
-
return rowsToFilter;
|
|
4399
|
+
var filterRows = function filterRows(rows) {
|
|
4400
|
+
return filterFn(rows, filterableColumnIds, globalFilter);
|
|
4431
4401
|
};
|
|
4432
4402
|
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4403
|
+
if (filterFromLeafRows) {
|
|
4404
|
+
filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
4405
|
+
}
|
|
4406
|
+
|
|
4407
|
+
return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
4438
4408
|
}
|
|
4439
4409
|
|
|
4440
4410
|
function sortRowsFn(instance, rowModel) {
|
|
@@ -4473,7 +4443,7 @@ function sortRowsFn(instance, rowModel) {
|
|
|
4473
4443
|
var bUndefined = typeof bValue === 'undefined';
|
|
4474
4444
|
|
|
4475
4445
|
if (aUndefined || bUndefined) {
|
|
4476
|
-
return aUndefined && bUndefined ? 0 : aUndefined ?
|
|
4446
|
+
return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
|
|
4477
4447
|
}
|
|
4478
4448
|
} // This function should always return in ascending order
|
|
4479
4449
|
|
|
@@ -4536,21 +4506,21 @@ function groupRowsFn(instance, sortedRowModel) {
|
|
|
4536
4506
|
var aggregateFn = instance.getColumnAggregationFn(column.id);
|
|
4537
4507
|
|
|
4538
4508
|
if (aggregateFn) {
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
}); // Get the columnValues to aggregate
|
|
4543
|
-
|
|
4544
|
-
var leafValues = leafRows.map(function (row) {
|
|
4545
|
-
var columnValue = row.values[column.id];
|
|
4509
|
+
values[column.id] = aggregateFn(function () {
|
|
4510
|
+
return leafRows.map(function (row) {
|
|
4511
|
+
var columnValue = row.values[column.id];
|
|
4546
4512
|
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4513
|
+
if (!depth && column.aggregateValue) {
|
|
4514
|
+
columnValue = column.aggregateValue(columnValue);
|
|
4515
|
+
}
|
|
4550
4516
|
|
|
4551
|
-
|
|
4517
|
+
return columnValue;
|
|
4518
|
+
});
|
|
4519
|
+
}, function () {
|
|
4520
|
+
return groupedRows.map(function (row) {
|
|
4521
|
+
return row.values[column.id];
|
|
4522
|
+
});
|
|
4552
4523
|
});
|
|
4553
|
-
values[column.id] = aggregateFn(leafValues, groupedValues);
|
|
4554
4524
|
} else if (column.aggregationType) {
|
|
4555
4525
|
console.info({
|
|
4556
4526
|
column: column
|
|
@@ -4593,7 +4563,7 @@ function groupRowsFn(instance, sortedRowModel) {
|
|
|
4593
4563
|
var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
|
|
4594
4564
|
|
|
4595
4565
|
var leafRows = depth ? flattenBy(groupedRows, function (row) {
|
|
4596
|
-
return row.
|
|
4566
|
+
return row.subRows;
|
|
4597
4567
|
}) : groupedRows;
|
|
4598
4568
|
var values = aggregateRowsToValues(leafRows, groupedRows, depth);
|
|
4599
4569
|
var row = instance.createRow(id, undefined, index, depth, values);
|