Отображать количество строк рядом с каждым фильтром в сетке

Я использую AG grid Enterprise для отображения своих данных. У меня есть фильтры для каждого столбца. Я хочу показать количество каждого фильтрующего элемента в самом раскрывающемся списке фильтров. Пожалуйста помоги. Это как если бы фильтр показывает, что у нас есть только мы и Канада в столбце страны, я хочу отображать частоты нас и канады в скобках рядом с этими фильтрующими элементами.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
392
1

Ответы 1

Update: added working sample

filterParams: { cellRenderer: "countryFilterRenderer"}

countryFilterRenderer(params) {
  let count = this.rowData.filter(i=>i.country.name==params.value).length;
  return `${params.value}(${count})`;
}

rowData:[{country:{name:..., code:...}];

rowData определение просто для ясности.

Для получения дополнительной информации проверьте док с образцами и официальный демонстрация с источники.

Update: added hot data sample

Если нам нужны данные, связанные с sorting или filtering, мы может использовать методы API: forEachNodeAfterFilter, forEachNodeAfterFilterAndSort, getDisplayedRowCount.

sportFilterRenderer(params){
    let count;
    if (this.gridApi.getDisplayedRowCount() != this.rowData.length){
      count = 0;
      this.gridApi.forEachNodeAfterFilter(node=>{
        if (node.data.sport == params.value)
          count++;
      })
    }
    else{
        count = this.rowData.filter(i=>i.sport==params.value).length;
    }
    return `${params.value}(${count})`;
}

https://plnkr.co/edit/bCI0SJ (проверьте фильтры страны и спорта)

В образце plnkr количество в фильтре sport будет пересчитываться каждый раз, как только вы выберете \ отмените выбор чего-либо из фильтра country.

Update: hot changes handling via cellRenderer

Итак, команда ag-grid заметила эти проблемы, и они есть на backlock - до этого - нет способа удовлетворить ваши требования так, как мы пытались. Здесь вы можете найти проблему (AG-2078)

Извините, я не поняла. Скажем, у меня есть две колонки, страна и город. Когда я нажимаю кнопку фильтра, в столбце страны должны отображаться США (20) и Великобритания (10). Как я могу подсчитать частоту каждого типа данных? Есть механизм зацикливания или что-то в этом роде?

ReactivePsycho 10.09.2018 13:34

«когда я нажимаю кнопку фильтра» в фильтре какого столбца. Предоставьте образец данных или скрипач, и я постараюсь помочь.

un.spike 10.09.2018 18:34

Я имел в виду фильтр по колонке страны. Моя сетка состоит из двух столбцов: страны и города. Я использую сетевое предприятие AG. Строка будет иметь название страны и города. Когда я нажимаю кнопку фильтра в столбце страны, значения фильтра (каждое отдельное название страны) должны содержать значение того, сколько случаев этой страны присутствует в сетке.

ReactivePsycho 11.09.2018 08:13

Хочу примерно так: stackoverflow.com/questions/40865679/…

ReactivePsycho 11.09.2018 09:08

Большое спасибо, это сработало. Извините, я новичок в сетке AG.

ReactivePsycho 12.09.2018 07:00

У меня есть еще одно сомнение. Если у меня есть два столбца с агрегированными данными в фильтре (например, столбец страны в приведенном выше примере), после фильтрации одного из столбцов агрегированные данные не обновляются в другом столбце. Есть идеи, как обновлять агрегированные данные каждый раз, когда фильтруется столбец?

ReactivePsycho 14.09.2018 10:06

создайте новый вопрос, чтобы избежать чрезмерного расширения рабочего образца, и предоставьте свой код.

un.spike 14.09.2018 10:30

Это тот же код, который вы предоставили в plunker. Я просто добавил еще один столбец с агрегированными данными. После фильтрации одного из двух столбцов совокупные данные другого столбца не обновляются.

ReactivePsycho 17.09.2018 07:37

Не понимаю, что ты имеешь в виду и чего хочешь достичь

un.spike 17.09.2018 10:42

Я объясню. Скажем, моя сетка состоит из двух столбцов: города и страны. Оба показывают данные подсчета вместе с вариантами фильтров, как и ваш код для столбца страны. Теперь, скажем, я применяю фильтр к столбцу страны, чтобы отфильтровать две страны. Естественно, данные счетчика фильтра столбца города должны измениться, верно? (Поскольку есть две страны, которые отфильтрованы). Этого не происходит. Это похоже на то, что мы должны обновлять сетку каждый раз при изменении фильтра вместе с данными счетчика фильтра. Теперь это имеет смысл?

ReactivePsycho 17.09.2018 10:51

> Естественно, данные счетчика фильтра столбца города должны измениться, верно? на основе образца rowData представляют собой только исходные данные, поэтому если вам нужны данные hot - с ними нужно обращаться по-другому

un.spike 17.09.2018 11:33

Это так, спасибо тебе большое. Просто небольшой глюк. Как только я отменяю выбор фильтрующего элемента, счетчик рядом с ним не становится 0 при отмене выбора. Чтобы отразить значение 0, сначала я должен выйти из фильтра, снова нажать кнопку фильтра, чтобы увидеть, что счетчик невыбранных вариантов стал 0. Есть предложения, чтобы значение 0 отражалось сразу после отмены выбора?

ReactivePsycho 18.09.2018 16:58

Таким образом, похоже, что это возможно только через собственный FilterComponent, потому что вы сможете обрабатывать filterChangedCallback и filterModifiedCallback непосредственно внутри компонента и изменять результат в необходимом формате.

un.spike 18.09.2018 18:57

Если возможно, не могли бы вы привести небольшой пример? Извините, что беспокою вас этим, но, как я уже упоминал, я новичок в этом и многому у вас научился. Опять же, никакого давления.

ReactivePsycho 19.09.2018 08:09

получил информацию от разработчиков - проверьте сообщение.

un.spike 21.09.2018 16:32

Другие вопросы по теме