Древовидная фильтрация в ag-сетке

Мы обновили корпоративную ag-grid с 16.0.1 до 25.1.0. В результате был изменен алгоритм фильтрации дерева.

Раньше он не включал не совпадающих дочерних элементов, но теперь он показывает ВСЕ дочерние элементы соответствующего родителя.

Например, если у нас есть данные в виде дерева:

[
    {
      path: ['One'],
    },
    {
      path: ['One', 'Twenty'],
    },
    {
      path: ['One', 'Thirty'],
    },
    {
      path: ['Two'],
    },
  ]

И воспользуйтесь настройками:

autoGroupColumnDef: {
  filter: 'agTextColumnFilter',
  floatingFilter: true
},
treeData: true,
getDataPath: ({ path }) => path,

Они отображаются как

- One
  - Twenty
  - Thirty
- Two

После фильтрации по One теперь он выглядит как

- One
  - Twenty
  - Thirty

- он включает в себя всех дочерних элементов One: Twenty, Thirty, которые не соответствуют фильтрации. Но в версии 16.0.1 этот результат был как

- One

- он включал только совпадающие элементы. В наших фильтрах нам нужен именно этот старомодный алгоритм, но я не нашел, как его настроить. Я пытался

filterValueGetter: ({ data: { path } }) => path[path.length - 1]

но это не работает, потому что потомки соответствующего родителя даже не попадают в эту функцию. Он работает только с одним и двумя родителями.

Как я могу установить эту фильтрацию дерева, если я хочу исключить несоответствующие дочерние элементы соответствующего родителя?


person Vladimir Kovarsky    schedule 17.05.2021    source источник


Ответы (1)


Группа поддержки Ag Grid помогла мне, большое вам спасибо!
Может быть, их ответ будет полезен для кого-то еще.
Мы должны использовать

excludeChildrenWhenTreeDataFiltering: true,

Как описано в https://www.ag-grid.com/javascript-grid/tree-data/#tree-data-filtering

person Vladimir Kovarsky    schedule 21.05.2021
comment
Большое тебе спасибо :) - person Spikolynn; 27.05.2021