|
54 | 54 | getter: null,
|
55 | 55 | formatter: null,
|
56 | 56 | comparer: function(a, b) { return a.value - b.value; },
|
| 57 | + predefinedValues: [], |
57 | 58 | aggregators: [],
|
| 59 | + aggregateEmpty: false, |
58 | 60 | aggregateCollapsed: false,
|
59 | 61 | aggregateChildGroups: false,
|
60 | 62 | collapsed: false
|
|
459 | 461 | var level = parentGroup ? parentGroup.level + 1 : 0;
|
460 | 462 | var gi = groupingInfos[level];
|
461 | 463 |
|
| 464 | + for (var i = 0, l = gi.predefinedValues.length; i < l; i++) { |
| 465 | + val = gi.predefinedValues[i]; |
| 466 | + group = groupsByVal[val]; |
| 467 | + if (!group) { |
| 468 | + group = new Slick.Group(); |
| 469 | + group.value = val; |
| 470 | + group.level = level; |
| 471 | + group.groupingKey = (parentGroup ? parentGroup.groupingKey + groupingDelimiter : '') + val; |
| 472 | + groups[groups.length] = group; |
| 473 | + groupsByVal[val] = group; |
| 474 | + } |
| 475 | + } |
| 476 | + |
462 | 477 | for (var i = 0, l = rows.length; i < l; i++) {
|
463 | 478 | r = rows[i];
|
464 | 479 | val = gi.getterIsAFn ? gi.getter(r) : r[gi.getter];
|
465 |
| - val = val || 0; |
466 | 480 | group = groupsByVal[val];
|
467 | 481 | if (!group) {
|
468 | 482 | group = new Slick.Group();
|
469 |
| - group.count = 0; |
470 | 483 | group.value = val;
|
471 | 484 | group.level = level;
|
472 | 485 | group.groupingKey = (parentGroup ? parentGroup.groupingKey + groupingDelimiter : '') + val;
|
473 |
| - group.rows = []; |
474 | 486 | groups[groups.length] = group;
|
475 | 487 | groupsByVal[val] = group;
|
476 | 488 | }
|
|
524 | 536 | calculateTotals(g.groups, level + 1);
|
525 | 537 | }
|
526 | 538 |
|
527 |
| - if (gi.aggregators.length) { |
| 539 | + if (gi.aggregators.length && ( |
| 540 | + gi.aggregateEmpty || g.rows.length || (g.groups && g.groups.length))) { |
528 | 541 | calculateGroupTotals(g);
|
529 | 542 | }
|
530 | 543 | }
|
|
546 | 559 | // Let the non-leaf setGrouping rows get garbage-collected.
|
547 | 560 | // They may have been used by aggregates that go over all of the descendants,
|
548 | 561 | // but at this point they are no longer needed.
|
549 |
| - g.rows = null; |
| 562 | + g.rows = []; |
550 | 563 | }
|
551 | 564 | }
|
552 | 565 | }
|
|
0 commit comments