@tanstack/table-core 8.0.0-alpha.20 → 8.0.0-alpha.23
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 +5 -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.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 +166 -192
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +303 -270
- package/build/types/aggregationTypes.d.ts +9 -9
- package/build/types/core.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +1 -0
- 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 +166 -192
- 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 +7 -10
- package/src/features/Filters.ts +2 -2
- package/src/features/Grouping.ts +2 -2
- 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
|
//
|
|
@@ -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) {
|
|
@@ -2900,6 +2908,10 @@ var Expanding = {
|
|
|
2900
2908
|
};
|
|
2901
2909
|
return propGetter(initialProps, userProps);
|
|
2902
2910
|
},
|
|
2911
|
+
getIsSomeRowsExpanded: function getIsSomeRowsExpanded() {
|
|
2912
|
+
var expanded = instance.getState().expanded;
|
|
2913
|
+
return expanded === true || Object.values(expanded).some(Boolean);
|
|
2914
|
+
},
|
|
2903
2915
|
getIsAllRowsExpanded: function getIsAllRowsExpanded() {
|
|
2904
2916
|
var expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
|
|
2905
2917
|
|
|
@@ -2960,14 +2972,7 @@ var Expanding = {
|
|
|
2960
2972
|
return row.subRows && !!row.subRows.length;
|
|
2961
2973
|
},
|
|
2962
2974
|
getToggleExpandedProps: function getToggleExpandedProps(userProps) {
|
|
2963
|
-
|
|
2964
|
-
title: 'Toggle Row Expanded',
|
|
2965
|
-
onClick: function onClick(e) {
|
|
2966
|
-
e.stopPropagation();
|
|
2967
|
-
instance.toggleRowExpanded(row.id);
|
|
2968
|
-
}
|
|
2969
|
-
};
|
|
2970
|
-
return propGetter(initialProps, userProps);
|
|
2975
|
+
return instance.getToggleExpandedProps(row.id, userProps);
|
|
2971
2976
|
}
|
|
2972
2977
|
};
|
|
2973
2978
|
}
|
|
@@ -3194,10 +3199,10 @@ var RowSelection = {
|
|
|
3194
3199
|
},
|
|
3195
3200
|
toggleAllRowsSelected: function toggleAllRowsSelected(value) {
|
|
3196
3201
|
instance.setRowSelection(function (old) {
|
|
3197
|
-
value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
|
|
3198
|
-
|
|
3202
|
+
value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
|
|
3203
|
+
|
|
3204
|
+
var rowSelection = _extends({}, old);
|
|
3199
3205
|
|
|
3200
|
-
var rowSelection = Object.assign({}, old);
|
|
3201
3206
|
var preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
|
|
3202
3207
|
// All of the rows are flat already, so it wouldn't be worth it
|
|
3203
3208
|
|
|
@@ -3941,7 +3946,11 @@ function createTableInstance(options) {
|
|
|
3941
3946
|
depth: depth,
|
|
3942
3947
|
values: values,
|
|
3943
3948
|
subRows: [],
|
|
3944
|
-
|
|
3949
|
+
getLeafRows: function getLeafRows() {
|
|
3950
|
+
return flattenBy(row.subRows, function (d) {
|
|
3951
|
+
return d.subRows;
|
|
3952
|
+
});
|
|
3953
|
+
},
|
|
3945
3954
|
getRowProps: function getRowProps(userProps) {
|
|
3946
3955
|
return instance.getRowProps(row.id, userProps);
|
|
3947
3956
|
},
|
|
@@ -4035,13 +4044,9 @@ function createTableInstance(options) {
|
|
|
4035
4044
|
|
|
4036
4045
|
for (var _i = 0; _i < row.originalSubRows.length; _i++) {
|
|
4037
4046
|
accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
|
|
4038
|
-
}
|
|
4039
|
-
|
|
4047
|
+
}
|
|
4040
4048
|
|
|
4041
4049
|
row.subRows = subRows;
|
|
4042
|
-
row.leafRows = flattenBy(subRows, function (d) {
|
|
4043
|
-
return d.leafRows;
|
|
4044
|
-
});
|
|
4045
4050
|
}
|
|
4046
4051
|
}
|
|
4047
4052
|
};
|
|
@@ -4063,9 +4068,9 @@ function createTableInstance(options) {
|
|
|
4063
4068
|
return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugTable;
|
|
4064
4069
|
},
|
|
4065
4070
|
onChange: function onChange() {
|
|
4066
|
-
instance._notifyRowSelectionReset();
|
|
4067
|
-
|
|
4068
4071
|
instance._notifyFiltersReset();
|
|
4072
|
+
|
|
4073
|
+
instance._notifyRowSelectionReset();
|
|
4069
4074
|
}
|
|
4070
4075
|
}),
|
|
4071
4076
|
// The final calls start at the bottom of the model,
|
|
@@ -4233,126 +4238,147 @@ function _createTable(_, __, __options) {
|
|
|
4233
4238
|
};
|
|
4234
4239
|
}
|
|
4235
4240
|
|
|
4236
|
-
function
|
|
4237
|
-
var columnFilters = instance.getState().columnFilters;
|
|
4241
|
+
function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
|
|
4238
4242
|
var newFilteredFlatRows = [];
|
|
4239
4243
|
var newFilteredRowsById = {};
|
|
4240
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
4241
4244
|
|
|
4242
|
-
var
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
// Find the columnFilters column
|
|
4247
|
-
var column = instance.getColumn(columnId);
|
|
4245
|
+
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4246
|
+
if (depth === void 0) {
|
|
4247
|
+
depth = 0;
|
|
4248
|
+
}
|
|
4248
4249
|
|
|
4249
|
-
|
|
4250
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
4251
|
-
console.warn("Table: Could not find a column with id: " + columnId);
|
|
4252
|
-
}
|
|
4250
|
+
rowsToFilter = rowsToFilter.slice(); // Filter from children up first
|
|
4253
4251
|
|
|
4254
|
-
|
|
4255
|
-
|
|
4252
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
4253
|
+
var _row$subRows;
|
|
4256
4254
|
|
|
4257
|
-
|
|
4258
|
-
var preFilteredRows = [].concat(rowsToFilter);
|
|
4255
|
+
var row = rowsToFilter[i];
|
|
4259
4256
|
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
};
|
|
4257
|
+
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4258
|
+
continue;
|
|
4263
4259
|
}
|
|
4264
4260
|
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
if (!filterFn) {
|
|
4268
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
4269
|
-
console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
|
|
4270
|
-
}
|
|
4261
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
4262
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4271
4263
|
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4264
|
+
if (!rowsToFilter[i].subRows.length) {
|
|
4265
|
+
rowsToFilter.splice(i, 1);
|
|
4266
|
+
i--;
|
|
4267
|
+
}
|
|
4268
|
+
}
|
|
4275
4269
|
|
|
4270
|
+
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4276
4271
|
|
|
4277
|
-
|
|
4272
|
+
rowsToFilter.forEach(function (row) {
|
|
4273
|
+
newFilteredFlatRows.push(row);
|
|
4274
|
+
newFilteredRowsById[row.id] = row;
|
|
4278
4275
|
});
|
|
4279
4276
|
return rowsToFilter;
|
|
4280
4277
|
};
|
|
4281
4278
|
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4287
|
-
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4293
|
-
return true;
|
|
4294
|
-
}
|
|
4295
|
-
|
|
4296
|
-
row.subRows = _recurseFilterRows(row.subRows, depth + 1);
|
|
4297
|
-
return row.subRows.length;
|
|
4298
|
-
});
|
|
4299
|
-
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4300
|
-
|
|
4301
|
-
rowsToFilter.forEach(function (row) {
|
|
4302
|
-
newFilteredFlatRows.push(row);
|
|
4303
|
-
newFilteredRowsById[row.id] = row;
|
|
4304
|
-
});
|
|
4305
|
-
return rowsToFilter;
|
|
4306
|
-
};
|
|
4307
|
-
|
|
4308
|
-
return {
|
|
4309
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
4310
|
-
flatRows: newFilteredFlatRows,
|
|
4311
|
-
rowsById: newFilteredRowsById
|
|
4312
|
-
};
|
|
4313
|
-
} // Filters top level and nested rows
|
|
4314
|
-
|
|
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
|
|
4315
4288
|
|
|
4316
4289
|
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4317
4290
|
if (depth === void 0) {
|
|
4318
4291
|
depth = 0;
|
|
4319
4292
|
}
|
|
4320
4293
|
|
|
4321
|
-
// Filter from parents downward
|
|
4294
|
+
// Filter from parents downward first
|
|
4322
4295
|
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4323
|
-
// We technically could do this recursively in the above loop,
|
|
4324
|
-
// but that would severely hinder the API for the user, since they
|
|
4325
|
-
// would be required to do that recursion in some scenarios
|
|
4326
4296
|
|
|
4327
|
-
rowsToFilter.
|
|
4297
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
4298
|
+
var _row$subRows2;
|
|
4299
|
+
|
|
4300
|
+
var row = rowsToFilter[i];
|
|
4328
4301
|
newFilteredFlatRows.push(row);
|
|
4329
4302
|
newFilteredRowsById[row.id] = row;
|
|
4330
4303
|
|
|
4331
|
-
if (!
|
|
4332
|
-
|
|
4304
|
+
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
4305
|
+
rowsToFilter.splice(i, 1);
|
|
4306
|
+
i--;
|
|
4307
|
+
continue;
|
|
4308
|
+
}
|
|
4333
4309
|
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
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
|
+
}
|
|
4337
4313
|
|
|
4338
|
-
row.subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4339
|
-
}
|
|
4340
|
-
});
|
|
4341
4314
|
return rowsToFilter;
|
|
4342
4315
|
};
|
|
4343
4316
|
|
|
4344
4317
|
return {
|
|
4345
|
-
rows: recurseFilterRows(
|
|
4318
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
4346
4319
|
flatRows: newFilteredFlatRows,
|
|
4347
4320
|
rowsById: newFilteredRowsById
|
|
4348
4321
|
};
|
|
4349
4322
|
}
|
|
4350
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
|
+
|
|
4351
4379
|
function globalFilterRowsFn(instance, rowModel) {
|
|
4352
4380
|
var globalFilter = instance.getState().globalFilter;
|
|
4353
|
-
var
|
|
4354
|
-
var newFilteredRowsById = {};
|
|
4355
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
4381
|
+
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
4356
4382
|
var filterFn = instance.getGlobalFilterFn();
|
|
4357
4383
|
|
|
4358
4384
|
if (!filterFn) {
|
|
@@ -4370,67 +4396,15 @@ function globalFilterRowsFn(instance, rowModel) {
|
|
|
4370
4396
|
return d.id;
|
|
4371
4397
|
});
|
|
4372
4398
|
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
// Filter from children up
|
|
4377
|
-
rowsToFilter = rowsToFilter.filter(function (row) {
|
|
4378
|
-
var _row$subRows;
|
|
4379
|
-
|
|
4380
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4381
|
-
return true;
|
|
4382
|
-
}
|
|
4383
|
-
|
|
4384
|
-
row.subRows = _recurseFilterRows(row.subRows);
|
|
4385
|
-
return row.subRows.length;
|
|
4386
|
-
});
|
|
4387
|
-
rowsToFilter = filterFn(rowsToFilter, filterableColumnIds, globalFilter); // Apply the filter to any subRows
|
|
4388
|
-
|
|
4389
|
-
rowsToFilter.forEach(function (row) {
|
|
4390
|
-
newFilteredFlatRows.push(row);
|
|
4391
|
-
newFilteredRowsById[row.id] = row;
|
|
4392
|
-
});
|
|
4393
|
-
return rowsToFilter;
|
|
4394
|
-
};
|
|
4395
|
-
|
|
4396
|
-
return {
|
|
4397
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
4398
|
-
flatRows: newFilteredFlatRows,
|
|
4399
|
-
rowsById: newFilteredRowsById
|
|
4400
|
-
};
|
|
4401
|
-
} // Filters top level and nested rows
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4405
|
-
|
|
4406
|
-
// Filter from parents downward
|
|
4407
|
-
rowsToFilter = filterFn(rowsToFilter, filterableColumnIds, globalFilter); // Apply the filter to any subRows
|
|
4408
|
-
// We technically could do this recursively in the above loop,
|
|
4409
|
-
// but that would severely hinder the API for the user, since they
|
|
4410
|
-
// would be required to do that recursion in some scenarios
|
|
4411
|
-
|
|
4412
|
-
rowsToFilter.forEach(function (row) {
|
|
4413
|
-
newFilteredFlatRows.push(row);
|
|
4414
|
-
newFilteredRowsById[row.id] = row;
|
|
4415
|
-
|
|
4416
|
-
if (!filterFromChildrenUp) {
|
|
4417
|
-
var _row$subRows2;
|
|
4418
|
-
|
|
4419
|
-
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
4420
|
-
return;
|
|
4421
|
-
}
|
|
4422
|
-
|
|
4423
|
-
row.subRows = recurseFilterRows(row.subRows);
|
|
4424
|
-
}
|
|
4425
|
-
});
|
|
4426
|
-
return rowsToFilter;
|
|
4399
|
+
var filterRows = function filterRows(rows) {
|
|
4400
|
+
return filterFn(rows, filterableColumnIds, globalFilter);
|
|
4427
4401
|
};
|
|
4428
4402
|
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4403
|
+
if (filterFromLeafRows) {
|
|
4404
|
+
filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
4405
|
+
}
|
|
4406
|
+
|
|
4407
|
+
return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
4434
4408
|
}
|
|
4435
4409
|
|
|
4436
4410
|
function sortRowsFn(instance, rowModel) {
|
|
@@ -4469,7 +4443,7 @@ function sortRowsFn(instance, rowModel) {
|
|
|
4469
4443
|
var bUndefined = typeof bValue === 'undefined';
|
|
4470
4444
|
|
|
4471
4445
|
if (aUndefined || bUndefined) {
|
|
4472
|
-
return aUndefined && bUndefined ? 0 : aUndefined ?
|
|
4446
|
+
return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
|
|
4473
4447
|
}
|
|
4474
4448
|
} // This function should always return in ascending order
|
|
4475
4449
|
|
|
@@ -4532,21 +4506,21 @@ function groupRowsFn(instance, sortedRowModel) {
|
|
|
4532
4506
|
var aggregateFn = instance.getColumnAggregationFn(column.id);
|
|
4533
4507
|
|
|
4534
4508
|
if (aggregateFn) {
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
}); // Get the columnValues to aggregate
|
|
4539
|
-
|
|
4540
|
-
var leafValues = leafRows.map(function (row) {
|
|
4541
|
-
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];
|
|
4542
4512
|
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4513
|
+
if (!depth && column.aggregateValue) {
|
|
4514
|
+
columnValue = column.aggregateValue(columnValue);
|
|
4515
|
+
}
|
|
4546
4516
|
|
|
4547
|
-
|
|
4517
|
+
return columnValue;
|
|
4518
|
+
});
|
|
4519
|
+
}, function () {
|
|
4520
|
+
return groupedRows.map(function (row) {
|
|
4521
|
+
return row.values[column.id];
|
|
4522
|
+
});
|
|
4548
4523
|
});
|
|
4549
|
-
values[column.id] = aggregateFn(leafValues, groupedValues);
|
|
4550
4524
|
} else if (column.aggregationType) {
|
|
4551
4525
|
console.info({
|
|
4552
4526
|
column: column
|
|
@@ -4589,7 +4563,7 @@ function groupRowsFn(instance, sortedRowModel) {
|
|
|
4589
4563
|
var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
|
|
4590
4564
|
|
|
4591
4565
|
var leafRows = depth ? flattenBy(groupedRows, function (row) {
|
|
4592
|
-
return row.
|
|
4566
|
+
return row.subRows;
|
|
4593
4567
|
}) : groupedRows;
|
|
4594
4568
|
var values = aggregateRowsToValues(leafRows, groupedRows, depth);
|
|
4595
4569
|
var row = instance.createRow(id, undefined, index, depth, values);
|