Глобальный фильтр хранится в разделе "Фильтры" Polymatica Manager, вне зависимости от того как он был создан. Создание глобального фильтра через Dashboards описано в соответствующем разделе: Добавление фильтра.
Глобальный фильтр может применяться:
- к виджету;
- к таблице и сводной таблице;
- к точкам или полигонам Яндекс Карты.
Для применения глобального фильтра следует воспользоваться соответствующим элементом, расположенным на слое проекта, если глобальный фильтр вынесен на слой, или нажать на кнопку , расположенную в правом верхнем углу окна просмотра проекта.
Применение фильтра со слоя
В зависимости от типа глобального фильтра необходимо выбрать значение из выпадающего списка или ввести необходимое значение в поле ввода.
Тип и вид фильтра зависят от настроенного шаблона.
Для фильтра типа «Поиск» при работе с числовыми значениями необходимо указывать дробные числа через «.» (например, «12.3») для корректного поиска по значениям.
В случае длинного значения в глобальном фильтре при наведении на такое значение отображается подсказка, которая содержит значение целиком.
Применение фильтра из панели
Для просмотра имеющихся в проекте глобальных фильтров следует нажать на кнопку , расположенную в правом верхнем углу окна просмотра проекта.
После нажатия на кнопку справа отобразится следующее окно:
Примененные фильтры отмечены чекбоксами. Поле поиска сверху позволяет отфильтровать список чекбоксов до необходимых значений.
Для сброса всех значений в примененных фильтрах следует нажать кнопку «Сбросить все». Фильтры с установленным значением по умолчанию сбросятся до этого значения, фильтры без установленного значения по умолчанию очистятся, и произойдет переход в окно просмотра проекта.
Для закрытия окна следует нажать кнопку , расположенную в верхнем правом углу окна, или нажать левую кнопку мыши вне области окна.
Перенос значения глобального фильтра между слоями
Если фильтр применен к объекту на одном слое, то при наличии аналогичного фильтра на другом слое, фильтрация может быть повторена при переходе на другой слой.
Для этого должны выполняться следующие условия:
- Фильтр-отправитель и фильтр-получатель должны быть созданы из одного шаблона.
- Фильтр-отправитель и фильтр-получать должны иметь одинаковый ключ (поле «Ключ» обязательно к заполнению).
- В настройках фильтра разрешена передача значений между слоями/проектами (необходимо добавить в настройки фильтра на финальном шаге создания связи между фильтром и объектом для обоих фильтров на обоих слоях).
На Слое 1 в фильтре выбрано значение «Владимир», виджет отсортирован по данному значению:
Перейдем на Слой 2. В фильтре установлено то же значение, что и на Слое 1, и другой виджет отсортирован по нему:
Перенос значения фильтра на встроенный слой
В случае если второй слой встроен в первый при помощи HTML-компонента iframe, для переноса значения (или массива значений) фильтра со слоя на слой используется JavaScript-фунцкция postMessage().
Предположим, что у нас есть Слой 1 и Слой 2, при этом Слой 1 встроен в Слой 2 при помощи iframe:
Также для примера создана кнопка, при нажатии на которую отправляется событие с функцией postMessage():
Разберем структуру данных, которые отправляются в iframe при нажатии на кнопку фильтрации.
Отправляемые данные - это объект, имеющий поля event и value, где event – название отправляемого события, а value – значение.
Для передачи фильтра в iframe мы используем event с названием 'changeFilter'.
Структура value всегда имеет тип массива объектов, которые имеют по два обязательных свойства: value и key, где value – значение, передаваемое в фильтр, и key – ключ этого фильтра.
Результат нажатия на кнопку фильтрации:
Передача значения в опубликованный виджет
В случае если в слой при HTML-компонента iframe встроен виджет, опубликованный по ссылке, для переноса значения (или массива значений) фильтра со слоя на виджет также используется JavaScript-фунцкция postMessage().
Предположим, что у нас есть Слой 1 и Виджет 1, при этом Виджет 1 встроен в Слой 1 при помощи iframe:
Обратите внимание
К виджету должен быть предоставлен неограниченный доступ (см. Действия с элементами проекта при просмотре).
Также для примера создана кнопка, при нажатии на которую отправляется событие с функцией postMessage():
Разберем структуру данных, которые отправляются в iframe при нажатии на кнопку фильтрации.
Отправляемые данные - это объект, имеющий поля event и value, где event – название отправляемого события, а value - обертка для параметров фильтрации и передаваемого значения фильтра.
Для передачи фильтра в iframe мы используем event с названием 'setFilter'.
В структуру value входят:
- logical - тип логического оператора, который используется для фильтрации (AND или OR);
- child - массив, включающий в себя:
- column_id - идентификатор колонки датасета, на котором построен опубликованный виджет;
- action - условие фильтрации;
- value - передаваемое значение.
Подсказка
- Узнать идентификатор колонки датасета можно в окне редактирования датасета, просто наведя курсор на колонку (см. Руководство пользователя модуля Manager для вашей версии → "Датасеты" → "Настройка датасета").
- Доступные типы условий фильтрации для передачи в поле action:
- EQ - равно
- NEQ - не равно
- GT - больше
- LT - меньше
- GTE - больше или равно
- LTE - меньше или равно
- IN - принадлежит множеству
- NIN - не принадлежит множеству
- LIKE - Содержит (с учетом регистра)
- LIKE_I - Содержит (без учета регистра)
- NLIKE - Не содержит (с учетом регистра)
- NLIKE_I - Не содержит (без учета регистра)
- START_LIKE - Начинается на (с учетом регистра)
- START_LIKE_I - Начинается на (без учета регистра)
- NSTART_LIKE - Не начинается на (с учетом регистра)
- NSTART_LIKE_I - Не начинается на (без учета регистра)
- END_LIKE - Заканчивается на (с учетом регистра)
- END_LIKE_I - Заканчивается на (без учета регистра)
- NEND_LIKE - Не заканчивается на (с учетом регистра)
- NEND_LIKE_I - Не заканчивается на (без учета регистра)
- DATE_RANGE - Входит в период
- NDATE_RANGE - Не входит в период
- RANGE - Входит в диапазон
- NRANGE - Не входит в диапазон
Результат выполнения кода при нажатии кнопки фильтрации: