@tanstack/table-core 8.0.0-alpha.22 → 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 +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.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 +156 -192
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +301 -268
- 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/utils/filterRowsUtils.d.ts +3 -0
- package/build/types/utils/sortRowsQuicksortFn.d.ts +11 -0
- package/build/umd/index.development.js +156 -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 +2 -10
- package/src/features/Filters.ts +2 -2
- package/src/features/Grouping.ts +2 -2
- 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
|
@@ -10,13 +10,13 @@ export declare const aggregationTypes: {
|
|
|
10
10
|
count: typeof count;
|
|
11
11
|
};
|
|
12
12
|
export declare type BuiltInAggregationType = keyof typeof aggregationTypes;
|
|
13
|
-
declare function sum(
|
|
14
|
-
declare function min(
|
|
15
|
-
declare function max(
|
|
16
|
-
declare function extent(
|
|
17
|
-
declare function mean(
|
|
18
|
-
declare function median(
|
|
19
|
-
declare function unique<T>(
|
|
20
|
-
declare function uniqueCount(
|
|
21
|
-
declare function count(
|
|
13
|
+
declare function sum(_getLeafValues: () => unknown[], getChildValues: () => unknown[]): number;
|
|
14
|
+
declare function min(_getLeafValues: () => unknown[], getChildValues: () => unknown[]): number | undefined;
|
|
15
|
+
declare function max(_getLeafValues: () => unknown[], getChildValues: () => unknown[]): number | undefined;
|
|
16
|
+
declare function extent(_getLeafValues: () => unknown[], getChildValues: () => unknown[]): (number | undefined)[];
|
|
17
|
+
declare function mean(getLeafValues: () => unknown[]): number | undefined;
|
|
18
|
+
declare function median(getLeafValues: () => unknown[]): number | undefined;
|
|
19
|
+
declare function unique<T>(getLeafValues: () => T[]): T[];
|
|
20
|
+
declare function uniqueCount(getLeafValues: () => unknown[]): number;
|
|
21
|
+
declare function count(getLeafValues: () => unknown[]): number;
|
|
22
22
|
export {};
|
package/build/types/core.d.ts
CHANGED
|
@@ -58,8 +58,8 @@ export declare type CoreRow<TGenerics extends PartialGenerics> = {
|
|
|
58
58
|
original?: TGenerics['Row'];
|
|
59
59
|
depth: number;
|
|
60
60
|
values: RowValues;
|
|
61
|
-
leafRows: Row<TGenerics>[];
|
|
62
61
|
subRows: Row<TGenerics>[];
|
|
62
|
+
getLeafRows: () => Row<TGenerics>[];
|
|
63
63
|
getRowProps: PropGetter<RowProps>;
|
|
64
64
|
originalSubRows?: TGenerics['Row'][];
|
|
65
65
|
getAllCells: () => Cell<TGenerics>[];
|
|
@@ -44,7 +44,7 @@ export declare type FiltersColumn<TGenerics extends PartialGenerics> = {
|
|
|
44
44
|
getPreFilteredMinMaxValues: () => [any, any];
|
|
45
45
|
};
|
|
46
46
|
export declare type FiltersOptions<TGenerics extends PartialGenerics> = {
|
|
47
|
-
|
|
47
|
+
filterFromLeafRows?: boolean;
|
|
48
48
|
filterTypes?: TGenerics['FilterFns'];
|
|
49
49
|
enableFilters?: boolean;
|
|
50
50
|
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
|
|
@@ -3,7 +3,7 @@ import { BuiltInAggregationType } from '../aggregationTypes';
|
|
|
3
3
|
import { Cell, Column, Getter, OnChangeFn, PropGetterValue, TableInstance, Row, Updater, PartialGenerics, Renderable, UseRenderer } from '../types';
|
|
4
4
|
import { Overwrite } from '../utils';
|
|
5
5
|
export declare type GroupingState = string[];
|
|
6
|
-
export declare type AggregationFn<TGenerics extends PartialGenerics> = (
|
|
6
|
+
export declare type AggregationFn<TGenerics extends PartialGenerics> = (getLeafValues: () => TGenerics['Row'][], getChildValues: () => TGenerics['Row'][]) => any;
|
|
7
7
|
export declare type CustomAggregationTypes<TGenerics extends PartialGenerics> = Record<string, AggregationFn<TGenerics>>;
|
|
8
8
|
export declare type AggregationType<TGenerics extends PartialGenerics> = 'auto' | BuiltInAggregationType | keyof TGenerics['AggregationFns'] | AggregationFn<TGenerics>;
|
|
9
9
|
export declare type GroupingTableState = {
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AnyGenerics, Row, RowModel, TableInstance } from '../types';
|
|
2
|
+
export declare function filterRowModelFromLeafs<TGenerics extends AnyGenerics>(rowsToFilter: Row<TGenerics>[], filterRows: (rowsToFilter: Row<TGenerics>[], depth: number) => Row<TGenerics>[], instance: TableInstance<TGenerics>): RowModel<TGenerics>;
|
|
3
|
+
export declare function filterRowModelFromRoot<TGenerics extends AnyGenerics>(rowsToFilter: Row<TGenerics>[], filterRows: (rowsToFilter: Row<TGenerics>[], depth: number) => Row<TGenerics>[], instance: TableInstance<TGenerics>): RowModel<TGenerics>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TableInstance, Row, RowModel, AnyGenerics } from '../types';
|
|
2
|
+
export declare function sortRowsFn<TGenerics extends AnyGenerics>(instance: TableInstance<TGenerics>, rowModel: RowModel<TGenerics>): RowModel<TGenerics>;
|
|
3
|
+
declare type Sorter<TGenerics extends AnyGenerics> = {
|
|
4
|
+
id: string;
|
|
5
|
+
compare: (a: Row<TGenerics>, b: Row<TGenerics>) => number;
|
|
6
|
+
desc?: boolean;
|
|
7
|
+
sortUndefined?: false | -1 | 1;
|
|
8
|
+
invertSorting?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function quicksort<TGenerics extends AnyGenerics>(rows: Row<TGenerics>[], sorters: Sorter<TGenerics>[]): Row<TGenerics>[];
|
|
11
|
+
export {};
|
|
@@ -388,18 +388,18 @@
|
|
|
388
388
|
count: count
|
|
389
389
|
};
|
|
390
390
|
|
|
391
|
-
function sum(
|
|
391
|
+
function sum(_getLeafValues, getChildValues) {
|
|
392
392
|
// It's faster to just add the aggregations together instead of
|
|
393
393
|
// process leaf nodes individually
|
|
394
|
-
return
|
|
394
|
+
return getChildValues().reduce(function (sum, next) {
|
|
395
395
|
return sum + (typeof next === 'number' ? next : 0);
|
|
396
396
|
}, 0);
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
-
function min(
|
|
399
|
+
function min(_getLeafValues, getChildValues) {
|
|
400
400
|
var min;
|
|
401
401
|
|
|
402
|
-
for (var _iterator = _createForOfIteratorHelperLoose(
|
|
402
|
+
for (var _iterator = _createForOfIteratorHelperLoose(getChildValues()), _step; !(_step = _iterator()).done;) {
|
|
403
403
|
var value = _step.value;
|
|
404
404
|
|
|
405
405
|
if (value != null && (min > value || min === undefined && value >= value)) {
|
|
@@ -410,10 +410,10 @@
|
|
|
410
410
|
return min;
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
function max(
|
|
413
|
+
function max(_getLeafValues, getChildValues) {
|
|
414
414
|
var max;
|
|
415
415
|
|
|
416
|
-
for (var _iterator2 = _createForOfIteratorHelperLoose(
|
|
416
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(getChildValues()), _step2; !(_step2 = _iterator2()).done;) {
|
|
417
417
|
var value = _step2.value;
|
|
418
418
|
|
|
419
419
|
if (value != null && (max < value || max === undefined && value >= value)) {
|
|
@@ -424,11 +424,11 @@
|
|
|
424
424
|
return max;
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
function extent(
|
|
427
|
+
function extent(_getLeafValues, getChildValues) {
|
|
428
428
|
var min;
|
|
429
429
|
var max;
|
|
430
430
|
|
|
431
|
-
for (var _iterator3 = _createForOfIteratorHelperLoose(
|
|
431
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(getChildValues()), _step3; !(_step3 = _iterator3()).done;) {
|
|
432
432
|
var value = _step3.value;
|
|
433
433
|
|
|
434
434
|
if (value != null) {
|
|
@@ -444,11 +444,11 @@
|
|
|
444
444
|
return [min, max];
|
|
445
445
|
}
|
|
446
446
|
|
|
447
|
-
function mean(
|
|
447
|
+
function mean(getLeafValues) {
|
|
448
448
|
var count = 0;
|
|
449
449
|
var sum = 0;
|
|
450
450
|
|
|
451
|
-
for (var _iterator4 = _createForOfIteratorHelperLoose(
|
|
451
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose(getLeafValues()), _step4; !(_step4 = _iterator4()).done;) {
|
|
452
452
|
var value = _step4.value;
|
|
453
453
|
|
|
454
454
|
if (value != null && (value = +value) >= value) {
|
|
@@ -460,14 +460,16 @@
|
|
|
460
460
|
return;
|
|
461
461
|
}
|
|
462
462
|
|
|
463
|
-
function median(
|
|
464
|
-
|
|
463
|
+
function median(getLeafValues) {
|
|
464
|
+
var leafValues = getLeafValues();
|
|
465
|
+
|
|
466
|
+
if (!leafValues.length) {
|
|
465
467
|
return;
|
|
466
468
|
}
|
|
467
469
|
|
|
468
470
|
var min = 0;
|
|
469
471
|
var max = 0;
|
|
470
|
-
|
|
472
|
+
leafValues.forEach(function (value) {
|
|
471
473
|
if (typeof value === 'number') {
|
|
472
474
|
min = Math.min(min, value);
|
|
473
475
|
max = Math.max(max, value);
|
|
@@ -476,16 +478,16 @@
|
|
|
476
478
|
return (min + max) / 2;
|
|
477
479
|
}
|
|
478
480
|
|
|
479
|
-
function unique(
|
|
480
|
-
return Array.from(new Set(
|
|
481
|
+
function unique(getLeafValues) {
|
|
482
|
+
return Array.from(new Set(getLeafValues()).values());
|
|
481
483
|
}
|
|
482
484
|
|
|
483
|
-
function uniqueCount(
|
|
484
|
-
return new Set(
|
|
485
|
+
function uniqueCount(getLeafValues) {
|
|
486
|
+
return new Set(getLeafValues()).size;
|
|
485
487
|
}
|
|
486
488
|
|
|
487
|
-
function count(
|
|
488
|
-
return
|
|
489
|
+
function count(getLeafValues) {
|
|
490
|
+
return getLeafValues().length;
|
|
489
491
|
}
|
|
490
492
|
|
|
491
493
|
//
|
|
@@ -1989,7 +1991,7 @@
|
|
|
1989
1991
|
onColumnFiltersChange: makeStateUpdater('columnFilters', instance),
|
|
1990
1992
|
onGlobalFilterChange: makeStateUpdater('globalFilter', instance),
|
|
1991
1993
|
autoResetColumnFilters: true,
|
|
1992
|
-
|
|
1994
|
+
filterFromLeafRows: true,
|
|
1993
1995
|
autoResetGlobalFilter: true,
|
|
1994
1996
|
globalFilterType: 'auto',
|
|
1995
1997
|
getColumnCanGlobalFilterFn: function getColumnCanGlobalFilterFn(column) {
|
|
@@ -2976,14 +2978,7 @@
|
|
|
2976
2978
|
return row.subRows && !!row.subRows.length;
|
|
2977
2979
|
},
|
|
2978
2980
|
getToggleExpandedProps: function getToggleExpandedProps(userProps) {
|
|
2979
|
-
|
|
2980
|
-
title: 'Toggle Row Expanded',
|
|
2981
|
-
onClick: function onClick(e) {
|
|
2982
|
-
e.stopPropagation();
|
|
2983
|
-
instance.toggleRowExpanded(row.id);
|
|
2984
|
-
}
|
|
2985
|
-
};
|
|
2986
|
-
return propGetter(initialProps, userProps);
|
|
2981
|
+
return instance.getToggleExpandedProps(row.id, userProps);
|
|
2987
2982
|
}
|
|
2988
2983
|
};
|
|
2989
2984
|
}
|
|
@@ -3210,10 +3205,10 @@
|
|
|
3210
3205
|
},
|
|
3211
3206
|
toggleAllRowsSelected: function toggleAllRowsSelected(value) {
|
|
3212
3207
|
instance.setRowSelection(function (old) {
|
|
3213
|
-
value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
|
|
3214
|
-
|
|
3208
|
+
value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
|
|
3209
|
+
|
|
3210
|
+
var rowSelection = _extends({}, old);
|
|
3215
3211
|
|
|
3216
|
-
var rowSelection = Object.assign({}, old);
|
|
3217
3212
|
var preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
|
|
3218
3213
|
// All of the rows are flat already, so it wouldn't be worth it
|
|
3219
3214
|
|
|
@@ -3955,7 +3950,11 @@
|
|
|
3955
3950
|
depth: depth,
|
|
3956
3951
|
values: values,
|
|
3957
3952
|
subRows: [],
|
|
3958
|
-
|
|
3953
|
+
getLeafRows: function getLeafRows() {
|
|
3954
|
+
return flattenBy(row.subRows, function (d) {
|
|
3955
|
+
return d.subRows;
|
|
3956
|
+
});
|
|
3957
|
+
},
|
|
3959
3958
|
getRowProps: function getRowProps(userProps) {
|
|
3960
3959
|
return instance.getRowProps(row.id, userProps);
|
|
3961
3960
|
},
|
|
@@ -4049,13 +4048,9 @@
|
|
|
4049
4048
|
|
|
4050
4049
|
for (var _i = 0; _i < row.originalSubRows.length; _i++) {
|
|
4051
4050
|
accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
|
|
4052
|
-
}
|
|
4053
|
-
|
|
4051
|
+
}
|
|
4054
4052
|
|
|
4055
4053
|
row.subRows = subRows;
|
|
4056
|
-
row.leafRows = flattenBy(subRows, function (d) {
|
|
4057
|
-
return d.leafRows;
|
|
4058
|
-
});
|
|
4059
4054
|
}
|
|
4060
4055
|
}
|
|
4061
4056
|
};
|
|
@@ -4077,9 +4072,9 @@
|
|
|
4077
4072
|
return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugTable;
|
|
4078
4073
|
},
|
|
4079
4074
|
onChange: function onChange() {
|
|
4080
|
-
instance._notifyRowSelectionReset();
|
|
4081
|
-
|
|
4082
4075
|
instance._notifyFiltersReset();
|
|
4076
|
+
|
|
4077
|
+
instance._notifyRowSelectionReset();
|
|
4083
4078
|
}
|
|
4084
4079
|
}),
|
|
4085
4080
|
// The final calls start at the bottom of the model,
|
|
@@ -4241,126 +4236,147 @@
|
|
|
4241
4236
|
};
|
|
4242
4237
|
}
|
|
4243
4238
|
|
|
4244
|
-
function
|
|
4245
|
-
var columnFilters = instance.getState().columnFilters;
|
|
4239
|
+
function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
|
|
4246
4240
|
var newFilteredFlatRows = [];
|
|
4247
4241
|
var newFilteredRowsById = {};
|
|
4248
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
4249
4242
|
|
|
4250
|
-
var
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
// Find the columnFilters column
|
|
4255
|
-
var column = instance.getColumn(columnId);
|
|
4243
|
+
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4244
|
+
if (depth === void 0) {
|
|
4245
|
+
depth = 0;
|
|
4246
|
+
}
|
|
4256
4247
|
|
|
4257
|
-
|
|
4258
|
-
{
|
|
4259
|
-
console.warn("Table: Could not find a column with id: " + columnId);
|
|
4260
|
-
}
|
|
4248
|
+
rowsToFilter = rowsToFilter.slice(); // Filter from children up first
|
|
4261
4249
|
|
|
4262
|
-
|
|
4263
|
-
|
|
4250
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
4251
|
+
var _row$subRows;
|
|
4264
4252
|
|
|
4265
|
-
|
|
4266
|
-
var preFilteredRows = [].concat(rowsToFilter);
|
|
4253
|
+
var row = rowsToFilter[i];
|
|
4267
4254
|
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
};
|
|
4255
|
+
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4256
|
+
continue;
|
|
4271
4257
|
}
|
|
4272
4258
|
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
if (!filterFn) {
|
|
4276
|
-
{
|
|
4277
|
-
console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
|
|
4278
|
-
}
|
|
4259
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
4260
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4279
4261
|
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4262
|
+
if (!rowsToFilter[i].subRows.length) {
|
|
4263
|
+
rowsToFilter.splice(i, 1);
|
|
4264
|
+
i--;
|
|
4265
|
+
}
|
|
4266
|
+
}
|
|
4283
4267
|
|
|
4268
|
+
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4284
4269
|
|
|
4285
|
-
|
|
4270
|
+
rowsToFilter.forEach(function (row) {
|
|
4271
|
+
newFilteredFlatRows.push(row);
|
|
4272
|
+
newFilteredRowsById[row.id] = row;
|
|
4286
4273
|
});
|
|
4287
4274
|
return rowsToFilter;
|
|
4288
4275
|
};
|
|
4289
4276
|
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4301
|
-
return true;
|
|
4302
|
-
}
|
|
4303
|
-
|
|
4304
|
-
row.subRows = _recurseFilterRows(row.subRows, depth + 1);
|
|
4305
|
-
return row.subRows.length;
|
|
4306
|
-
});
|
|
4307
|
-
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4308
|
-
|
|
4309
|
-
rowsToFilter.forEach(function (row) {
|
|
4310
|
-
newFilteredFlatRows.push(row);
|
|
4311
|
-
newFilteredRowsById[row.id] = row;
|
|
4312
|
-
});
|
|
4313
|
-
return rowsToFilter;
|
|
4314
|
-
};
|
|
4315
|
-
|
|
4316
|
-
return {
|
|
4317
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
4318
|
-
flatRows: newFilteredFlatRows,
|
|
4319
|
-
rowsById: newFilteredRowsById
|
|
4320
|
-
};
|
|
4321
|
-
} // Filters top level and nested rows
|
|
4322
|
-
|
|
4277
|
+
return {
|
|
4278
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
4279
|
+
flatRows: newFilteredFlatRows,
|
|
4280
|
+
rowsById: newFilteredRowsById
|
|
4281
|
+
};
|
|
4282
|
+
}
|
|
4283
|
+
function filterRowModelFromRoot(rowsToFilter, filterRows, instance) {
|
|
4284
|
+
var newFilteredFlatRows = [];
|
|
4285
|
+
var newFilteredRowsById = {}; // Filters top level and nested rows
|
|
4323
4286
|
|
|
4324
4287
|
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4325
4288
|
if (depth === void 0) {
|
|
4326
4289
|
depth = 0;
|
|
4327
4290
|
}
|
|
4328
4291
|
|
|
4329
|
-
// Filter from parents downward
|
|
4292
|
+
// Filter from parents downward first
|
|
4330
4293
|
rowsToFilter = filterRows(rowsToFilter, depth); // Apply the filter to any subRows
|
|
4331
|
-
// We technically could do this recursively in the above loop,
|
|
4332
|
-
// but that would severely hinder the API for the user, since they
|
|
4333
|
-
// would be required to do that recursion in some scenarios
|
|
4334
4294
|
|
|
4335
|
-
rowsToFilter.
|
|
4295
|
+
for (var i = 0; i < rowsToFilter.length; i++) {
|
|
4296
|
+
var _row$subRows2;
|
|
4297
|
+
|
|
4298
|
+
var row = rowsToFilter[i];
|
|
4336
4299
|
newFilteredFlatRows.push(row);
|
|
4337
4300
|
newFilteredRowsById[row.id] = row;
|
|
4338
4301
|
|
|
4339
|
-
if (!
|
|
4340
|
-
|
|
4302
|
+
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
4303
|
+
rowsToFilter.splice(i, 1);
|
|
4304
|
+
i--;
|
|
4305
|
+
continue;
|
|
4306
|
+
}
|
|
4341
4307
|
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4308
|
+
rowsToFilter[i] = instance.createRow(row.id, row.original, row.index, row.depth, row.values);
|
|
4309
|
+
rowsToFilter[i].subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4310
|
+
}
|
|
4345
4311
|
|
|
4346
|
-
row.subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
4347
|
-
}
|
|
4348
|
-
});
|
|
4349
4312
|
return rowsToFilter;
|
|
4350
4313
|
};
|
|
4351
4314
|
|
|
4352
4315
|
return {
|
|
4353
|
-
rows: recurseFilterRows(
|
|
4316
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
4354
4317
|
flatRows: newFilteredFlatRows,
|
|
4355
4318
|
rowsById: newFilteredRowsById
|
|
4356
4319
|
};
|
|
4357
4320
|
}
|
|
4358
4321
|
|
|
4322
|
+
function columnFilterRowsFn(instance, rowModel) {
|
|
4323
|
+
var columnFilters = instance.getState().columnFilters;
|
|
4324
|
+
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
4325
|
+
|
|
4326
|
+
var filterRows = function filterRows(rowsToFilter, depth) {
|
|
4327
|
+
for (var i = 0; i < columnFilters.length; i++) {
|
|
4328
|
+
var _columnFilters$i = columnFilters[i],
|
|
4329
|
+
columnId = _columnFilters$i.id,
|
|
4330
|
+
filterValue = _columnFilters$i.value; // Find the columnFilters column
|
|
4331
|
+
|
|
4332
|
+
var column = instance.getColumn(columnId);
|
|
4333
|
+
|
|
4334
|
+
if (!column) {
|
|
4335
|
+
{
|
|
4336
|
+
console.warn("Table: Could not find a column with id: " + columnId);
|
|
4337
|
+
}
|
|
4338
|
+
|
|
4339
|
+
throw new Error();
|
|
4340
|
+
}
|
|
4341
|
+
|
|
4342
|
+
if (depth === 0) {
|
|
4343
|
+
(function () {
|
|
4344
|
+
var preFilteredRows = [].concat(rowsToFilter);
|
|
4345
|
+
|
|
4346
|
+
column.getPreFilteredRows = function () {
|
|
4347
|
+
return preFilteredRows;
|
|
4348
|
+
};
|
|
4349
|
+
})();
|
|
4350
|
+
}
|
|
4351
|
+
|
|
4352
|
+
var filterFn = instance.getColumnFilterFn(column.id);
|
|
4353
|
+
|
|
4354
|
+
if (!filterFn) {
|
|
4355
|
+
{
|
|
4356
|
+
console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
|
|
4357
|
+
}
|
|
4358
|
+
|
|
4359
|
+
continue;
|
|
4360
|
+
} // Pass the rows, id, filterValue and column to the filterFn
|
|
4361
|
+
// to get the filtered rows back
|
|
4362
|
+
|
|
4363
|
+
|
|
4364
|
+
rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
|
|
4365
|
+
}
|
|
4366
|
+
|
|
4367
|
+
return rowsToFilter;
|
|
4368
|
+
};
|
|
4369
|
+
|
|
4370
|
+
if (filterFromLeafRows) {
|
|
4371
|
+
return filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
4372
|
+
}
|
|
4373
|
+
|
|
4374
|
+
return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
4375
|
+
}
|
|
4376
|
+
|
|
4359
4377
|
function globalFilterRowsFn(instance, rowModel) {
|
|
4360
4378
|
var globalFilter = instance.getState().globalFilter;
|
|
4361
|
-
var
|
|
4362
|
-
var newFilteredRowsById = {};
|
|
4363
|
-
var filterFromChildrenUp = instance.options.filterFromChildrenUp;
|
|
4379
|
+
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
4364
4380
|
var filterFn = instance.getGlobalFilterFn();
|
|
4365
4381
|
|
|
4366
4382
|
if (!filterFn) {
|
|
@@ -4378,67 +4394,15 @@
|
|
|
4378
4394
|
return d.id;
|
|
4379
4395
|
});
|
|
4380
4396
|
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
// Filter from children up
|
|
4385
|
-
rowsToFilter = rowsToFilter.filter(function (row) {
|
|
4386
|
-
var _row$subRows;
|
|
4387
|
-
|
|
4388
|
-
if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
|
|
4389
|
-
return true;
|
|
4390
|
-
}
|
|
4391
|
-
|
|
4392
|
-
row.subRows = _recurseFilterRows(row.subRows);
|
|
4393
|
-
return row.subRows.length;
|
|
4394
|
-
});
|
|
4395
|
-
rowsToFilter = filterFn(rowsToFilter, filterableColumnIds, globalFilter); // Apply the filter to any subRows
|
|
4396
|
-
|
|
4397
|
-
rowsToFilter.forEach(function (row) {
|
|
4398
|
-
newFilteredFlatRows.push(row);
|
|
4399
|
-
newFilteredRowsById[row.id] = row;
|
|
4400
|
-
});
|
|
4401
|
-
return rowsToFilter;
|
|
4402
|
-
};
|
|
4403
|
-
|
|
4404
|
-
return {
|
|
4405
|
-
rows: _recurseFilterRows(rowModel.rows),
|
|
4406
|
-
flatRows: newFilteredFlatRows,
|
|
4407
|
-
rowsById: newFilteredRowsById
|
|
4408
|
-
};
|
|
4409
|
-
} // Filters top level and nested rows
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
|
|
4413
|
-
|
|
4414
|
-
// Filter from parents downward
|
|
4415
|
-
rowsToFilter = filterFn(rowsToFilter, filterableColumnIds, globalFilter); // Apply the filter to any subRows
|
|
4416
|
-
// We technically could do this recursively in the above loop,
|
|
4417
|
-
// but that would severely hinder the API for the user, since they
|
|
4418
|
-
// would be required to do that recursion in some scenarios
|
|
4419
|
-
|
|
4420
|
-
rowsToFilter.forEach(function (row) {
|
|
4421
|
-
newFilteredFlatRows.push(row);
|
|
4422
|
-
newFilteredRowsById[row.id] = row;
|
|
4423
|
-
|
|
4424
|
-
if (!filterFromChildrenUp) {
|
|
4425
|
-
var _row$subRows2;
|
|
4426
|
-
|
|
4427
|
-
if (!((_row$subRows2 = row.subRows) != null && _row$subRows2.length)) {
|
|
4428
|
-
return;
|
|
4429
|
-
}
|
|
4430
|
-
|
|
4431
|
-
row.subRows = recurseFilterRows(row.subRows);
|
|
4432
|
-
}
|
|
4433
|
-
});
|
|
4434
|
-
return rowsToFilter;
|
|
4397
|
+
var filterRows = function filterRows(rows) {
|
|
4398
|
+
return filterFn(rows, filterableColumnIds, globalFilter);
|
|
4435
4399
|
};
|
|
4436
4400
|
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4401
|
+
if (filterFromLeafRows) {
|
|
4402
|
+
filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
4403
|
+
}
|
|
4404
|
+
|
|
4405
|
+
return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
4442
4406
|
}
|
|
4443
4407
|
|
|
4444
4408
|
function sortRowsFn(instance, rowModel) {
|
|
@@ -4477,7 +4441,7 @@
|
|
|
4477
4441
|
var bUndefined = typeof bValue === 'undefined';
|
|
4478
4442
|
|
|
4479
4443
|
if (aUndefined || bUndefined) {
|
|
4480
|
-
return aUndefined && bUndefined ? 0 : aUndefined ?
|
|
4444
|
+
return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
|
|
4481
4445
|
}
|
|
4482
4446
|
} // This function should always return in ascending order
|
|
4483
4447
|
|
|
@@ -4540,21 +4504,21 @@
|
|
|
4540
4504
|
var aggregateFn = instance.getColumnAggregationFn(column.id);
|
|
4541
4505
|
|
|
4542
4506
|
if (aggregateFn) {
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
}); // Get the columnValues to aggregate
|
|
4547
|
-
|
|
4548
|
-
var leafValues = leafRows.map(function (row) {
|
|
4549
|
-
var columnValue = row.values[column.id];
|
|
4507
|
+
values[column.id] = aggregateFn(function () {
|
|
4508
|
+
return leafRows.map(function (row) {
|
|
4509
|
+
var columnValue = row.values[column.id];
|
|
4550
4510
|
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4511
|
+
if (!depth && column.aggregateValue) {
|
|
4512
|
+
columnValue = column.aggregateValue(columnValue);
|
|
4513
|
+
}
|
|
4554
4514
|
|
|
4555
|
-
|
|
4515
|
+
return columnValue;
|
|
4516
|
+
});
|
|
4517
|
+
}, function () {
|
|
4518
|
+
return groupedRows.map(function (row) {
|
|
4519
|
+
return row.values[column.id];
|
|
4520
|
+
});
|
|
4556
4521
|
});
|
|
4557
|
-
values[column.id] = aggregateFn(leafValues, groupedValues);
|
|
4558
4522
|
} else if (column.aggregationType) {
|
|
4559
4523
|
console.info({
|
|
4560
4524
|
column: column
|
|
@@ -4597,7 +4561,7 @@
|
|
|
4597
4561
|
var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
|
|
4598
4562
|
|
|
4599
4563
|
var leafRows = depth ? flattenBy(groupedRows, function (row) {
|
|
4600
|
-
return row.
|
|
4564
|
+
return row.subRows;
|
|
4601
4565
|
}) : groupedRows;
|
|
4602
4566
|
var values = aggregateRowsToValues(leafRows, groupedRows, depth);
|
|
4603
4567
|
var row = instance.createRow(id, undefined, index, depth, values);
|