Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

childRows is the same as leafRows in aggregationFns #5769

Open
2 tasks done
tonyxiao opened this issue Oct 2, 2024 · 1 comment
Open
2 tasks done

childRows is the same as leafRows in aggregationFns #5769

tonyxiao opened this issue Oct 2, 2024 · 1 comment

Comments

@tonyxiao
Copy link

tonyxiao commented Oct 2, 2024

TanStack Table version

8.17.3

Framework/Library version

React

Describe the bug and the steps to reproduce it

import {
  getCoreRowModel,
  getFacetedRowModel,
  getFacetedUniqueValues,
  getFilteredRowModel,
  getPaginationRowModel,
  getGroupedRowModel,
  getSortedRowModel,
  useReactTable,
} from '@tanstack/react-table';

const events = [
  {id: '12', date: '2022-01-22', sold: 1, product: 'monitor'},
  {id: '1', date: '2022-01-20', sold: 20, product: 'tables'},
  {id: '2', date: '2022-01-21', sold: 4, product: 'tables'},
  {id: '3', date: '2022-01-22', sold: 2, product: 'tables'},
  {id: '4', date: '2022-01-23', sold: 3, product: 'tables'},
  {id: '5', date: '2022-01-20', sold: 10, product: 'chairs'},
  {id: '7', date: '2022-01-22', sold: 4, product: 'chairs'},
  {id: '8', date: '2022-01-23', sold: 1, product: 'chairs'},
  {id: '9', date: '2022-01-20', sold: 3, product: 'computer'},
  {id: '10', date: '2022-01-21', sold: 3, product: 'computer'},
  {id: '11', date: '2022-01-22', sold: 3, product: 'computer'},
];

describe.only('@tanstack/table useReactTable', () => {
  it('recursive grouping', async () => {
    const hook = renderHook(() => {
      return useReactTable({
        data: events,
        columns: [
          {accessorKey: 'date'},
          {accessorKey: 'product'},
          {accessorKey: 'sold', aggregationFn: 'custom' as 'auto'},
          {accessorKey: 'ALL'},
        ],

        getCoreRowModel: getCoreRowModel(),
        getGroupedRowModel: getGroupedRowModel(),
        getFilteredRowModel: getFilteredRowModel(),
        getFacetedRowModel: getFacetedRowModel(),
        getFacetedUniqueValues: getFacetedUniqueValues(),
        getSortedRowModel: getSortedRowModel(),
        getPaginationRowModel: getPaginationRowModel(),
        // debugTable: true,
        state: {
          grouping: ['ALL', 'product', 'date'],
        },
        aggregationFns: {
          custom: (colId, leafRows, childRows) => {
            console.log('custom', {
              colId,
              leafRows: leafRows.map((r) => r.id),
              childRows: childRows.map((r) => r.id),
            });
            return -1;
          },
        },
      });
    });

    act(() => {
      console.log(
        'hook.result.current.getRowModel().rows',

        JSON.stringify(
          hook.result.current.getRowModel().flatRows.map((r) => ({
            id: r.id,
            // original: r.original,
            // originalSubRows: r.originalSubRows,
            sold: r.getValue('sold'),
            subRowsCount: r.subRows.length,
            leafRowsCount: r.getLeafRows().length,
          })),
          null,
          2,
        ),

        // hook.result.current.getRowModel().flatRows.length,
      );
    });
  });
});

This will render the following log for the root row with id of ALL:undefined

console.log
    custom {
      colId: 'sold',
      leafRows: [
        '0', '1', '2',  '3',
        '4', '5', '6',  '7',
        '8', '9', '10'
      ],
      childRows: [
        '0', '1', '2',  '3',
        '4', '5', '6',  '7',
        '8', '9', '10'
      ]
    }

This is really strange. What's the difference between childRows vs. leafRows then?

Your Minimal, Reproducible Example - (Sandbox Highly Recommended)

See above

Screenshots or Videos (Optional)

No response

Do you intend to try to help solve this bug with your own PR?

None

Terms & Code of Conduct

  • I agree to follow this project's Code of Conduct
  • I understand that if my bug cannot be reliable reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.
@roykathurima
Copy link

I have the same issue. I had started a discussion here hoping to get some insight.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants