Глобальный фильтр хранится в разделе Фильтры, вне зависимости от того как он был создан. Создание глобального фильтра описано в соответствующих разделах: Добавление фильтра и Создание фильтра.
Глобальный фильтр может применяться:
Для применения глобального фильтра следует воспользоваться соответствующим элементом, расположенным на слое проекта, если глобальный фильтр вынесен на слой, или нажать на кнопку , расположенную в правом верхнем углу окна просмотра проекта.
В зависимости от типа глобального фильтра необходимо выбрать значение из выпадающего списка или ввести необходимое значение в поле ввода.
Тип и вид фильтра зависят от настроенного шаблона.
Для фильтра типа «Поиск» при работе с числовыми значениями необходимо указывать дробные числа через «.» (например, «12.3») для корректного поиска по значениям. |
В случае длинного значения в глобальном фильтре при наведении на такое значение отображается подсказка, которая содержит значение целиком.
Для просмотра имеющихся в проекте глобальных фильтров следует нажать на кнопку , расположенную в правом верхнем углу окна просмотра проекта.
После нажатия на кнопку справа отобразится следующее окно:
Примененные фильтры отмечены чекбоксами. Поле поиска сверху позволяет отфильтровать список чекбоксов до необходимых значений.
Для сброса всех значений в примененных фильтрах следует нажать кнопку «Сбросить все». Фильтры с установленным значением по умолчанию сбросятся до этого значения, фильтры без установленного значения по умолчанию очистятся, и произойдет переход в окно просмотра проекта.
Для закрытия окна следует нажать кнопку , расположенную в верхнем правом углу окна, или нажать левую кнопку мыши вне области окна.
Если фильтр применен к объекту на одном слое, то при наличии аналогичного фильтра на другом слое, фильтрация может быть повторена при переходе на другой слой.
Для этого должны выполняться следующие условия:
На Слое 1 в фильтре выбрано значение «Владимир», виджет отсортирован по данному значению:
Перейдем на Слой 2. В фильтре установлено то же значение, что и на Слое 1, и другой виджет отсортирован по нему:
В случае если второй слой встроен в первый при помощи HTML-компонента iframe, для переноса значения (или массива значений) фильтра со слоя на слой используется JavaScript-фунцкция postMessage().
Предположим, что у нас есть Слой 1 и Слой 2, при этом Слой 1 встроен в Слой 2 при помощи iframe:
<!-- Встроенный iframe c указанием URL слоя 2, ширины, высоты и уникального идентификатора "frame". --> <iframe src="https://dev.platform.polymatica.ru/dashboard/project/82026/193019" width="1400" height="700" id="frame"></iframe> |
Также для примера создана кнопка, при нажатии на которую отправляется событие с функцией postMessage():
<!-- Кнопка для отправки события ChangeFilter с массивом value --> <button onclick="sendMessage()">Кнопка фильтрации</button> <script> // Функция для отправки сообщения в родительское окно function sendMessage() { // Отправляем сообщение с событием changeFilter и массивом value в iframe var iframe = document.getElementById('frame'); iframe.contentWindow.postMessage({ event: 'changeFilter', // Название события value: [{ value: ['январь'], key: "test123" }] // Массив с объектами значений }, new URL(iframe.src).origin); // Ограничиваем сообщение тем же источником, что и iframe } // Слушатель для обработки сообщений от iframe (если нужно) window.addEventListener('message', (event) => { console.log(event); // Выводим событие в консоль для отладки }); </script> |
Разберем структуру данных, которые отправляются в iframe при нажатии на кнопку фильтрации.
Отправляемые данные - это объект, имеющий поля event и value, где event – название отправляемого события, а value – значение.
Для передачи фильтра в iframe мы используем event с названием 'changeFilter'.
Структура value всегда имеет тип массива объектов, которые имеют по два обязательных свойства: value и key, где value – значение, передаваемое в фильтр, и key – ключ этого фильтра.
Результат нажатия на кнопку фильтрации:
В случае если в слой при HTML-компонента iframe встроен виджет, опубликованный по ссылке, для переноса значения (или массива значений) фильтра со слоя на виджет также используется JavaScript-фунцкция postMessage().
Предположим, что у нас есть Слой 1 и Виджет 1, при этом Виджет 1 встроен в Слой 1 при помощи iframe:
<!-- Встроенный iframe c указанием URL Виджета 1, ширины, высоты и уникального идентификатора "frame". --> <iframe src="<iframe src="https://dev.platform.polymatica.ru/dashboard/shared-widget/88969?uid=86bc4e49-4ab6-5746-a785-7ef010369997" width="1400" height="700" id="frame"></iframe> |
К виджету должен быть предоставлен неограниченный доступ (см. Действия с элементами проекта при просмотре). |
Также для примера создана кнопка, при нажатии на которую отправляется событие с функцией postMessage():
<!-- Кнопка для отправки события SetFilter с массивом value --> <button onclick="setFilter()">Кнопка фильтрации</button> <script> function setFilter() { var iframe = document.getElementById('frame'); iframe.contentWindow.postMessage({ event: 'setFilter', // Название события value: [ { "logical": "AND", "child": [ { "column_id": 4313421, "action": "EQ", "value": "Бабушкинская" } ] } ] }, new URL(iframe.src).origin); // Ограничиваем сообщение тем же источником, что и iframe console.warn('set filter'); // Отправляем сообщение в консоль для отладки } </script> |
Разберем структуру данных, которые отправляются в iframe при нажатии на кнопку фильтрации.
Отправляемые данные - это объект, имеющий поля event и value, где event – название отправляемого события, а value - обертка для параметров фильтрации и передаваемого значения фильтра.
Для передачи фильтра в iframe мы используем event с названием 'setFilter'.
В структуру value входят:
|
Результат выполнения кода при нажатии кнопки фильтрации: