Фильтрация
8 800 555-89-02
Войти
For developers
CTRL+K
Standalone2410

Фильтрация

В этой статье
  • Фильтрация
  • Чтение фильтров
  • Управление фильтрацией отчета с помощью виджета

Фильтрация в виджетах используется для управления отображением данных в соответствии с определенными критериями или условиями. Ее основная цель — позволить пользователям виджетов извлекать и анализировать только те данные, которые соответствуют их потребностям или интересам.

Для работы с фильтрацией отчета в props виджета передается объект filtration интерфейса IWidgetFiltration. Этот объект позволяет виджету не только читать фильтры, но и управлять ими.

Чтение фильтров

Чтобы виджет использовал фильтры отчета и реагировал на их изменение, необходимо передавать их в вычислитель в качестве поля filters Подготовленные для вычислителя фильтры отчета можно получить из filtration.preparedFilterValues. Пример можно найти в разделе Вычислители.

Также виджет может иметь предустановленные фильтры, которые лежат в его settings.

Чтение фильтров

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

Итоговый код вызова вычислителя:

import { mapFormulaFiltersToInputs } from "@infomaximum/widget-sdk";

// В коде виджета

generalCalculator.calculate({
  filters: [
    ...props.filtration.preparedFilterValues,
    ...mapFormulaFiltersToInputs(props.settings.filters ?? []),
  ],
  measures,
  dimensions,
});

Порядок передачи фильтров не влияет на вычисляемые данные.

Управление фильтрацией отчета с помощью виджета

Виджет может добавлять в отчет свои фильтры, например, в ответ на клик пользователя по интересующему значению. Добавленный фильтр будет влиять не только на текущий виджет, но и на фильтрацию остальных виджетов отчета. Более подробно про фильтрацию можно прочитать на странице Фильтр по клику.

Рассмотрим самый распространенный фильтр — по формуле. Обычно он используется для фильтрации по значениям разреза. Например, если виджет отображает значения разреза, то при клике по конкретному значению можно добавить в отчет соответствующий фильтр. Это позволит увидеть детализацию по выбранному значению в других виджетах. В этом случае обработчик клика может выглядеть следующим образом:

import { IWidgetDimension, ESimpleDataType, ECalculatorFilterMethods, getDimensionFormula } from "@infomaximum/widget-sdk";

// В коде виджета

const handleClick = (dimension: IWidgetDimension, value: string) => {
  props.filtration.addFormulaFilter({
    // Заголовок, отображаемый в добавленном фильтре
    name: dimension.name,
    // Формула, по которой осуществляется фильтрация
    formula: getDimensionFormula(dimension),
    // Тип данных формулы
    dataType: dimension.dataType ?? ESimpleDataType.OTHER,
    // Метод фильтрации
    filteringMethod: ECalculatorFilterMethods.INCLUDE,
    // Выбранные значения
    checkedValues: [value]
  });
};

Более подробно с API фильтрации можно ознакомиться в интерфейсе IWidgetFiltration.

Была ли статья полезна?

Да
Нет
Предыдущая
Вычислители
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com
Для бизнеса
© 20102024. ООО «Инфомаксимум»
Мы используем файлы cookies, чтобы сайт был лучше для вас.