Хотя APEX не поддерживает это из коробки, это можно сделать с помощью JavaScript. Каждый раз, когда отображается диалоговое окно фильтра, содержимое передается с сервера на клиент и вводится в DOM. Вам просто нужно изменить контент, прежде чем пользователь сможет его увидеть. Одним из способов достижения этого является использование интерфейса MutationObserver: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
Вот несколько шагов, которые вы можете выполнить, чтобы сделать это (протестировано в APEX 19.2):
- Go для интерактивного отчета и установите Stati c ID на my-irr .
Go на странице атрибуты уровня и добавьте следующий код в поле Объявление функции и глобальной переменной :
function removeIRFilterOperators() {
var irRegId = 'my-irr';
var filterOperatorsToRemove = ['!=', 'ABS'];
var observer;
function detectFilterDialog(mutationsList) {
for (var mIdx = 0; mIdx < mutationsList.length; mIdx++) {
if (mutationsList[mIdx].addedNodes.length &&
mutationsList[mIdx].addedNodes[0].classList &&
mutationsList[mIdx].addedNodes[0].classList.contains('a-IRR-dialog--filter')) {
removeOperators();
}
}
}
function removeOperators() {
var anchors = document.querySelectorAll('#' + irRegId + '_row_filter_operators a');
for (var aIdx = 0; aIdx < anchors.length; aIdx++) {
if (filterOperatorsToRemove.includes(anchors[aIdx].textContent)) {
anchors[aIdx].parentElement.parentElement.removeChild(anchors[aIdx].parentElement);
}
}
}
observer = new MutationObserver(detectFilterDialog);
observer.observe(
document,
{
attributes: false,
childList: true,
subtree: true
}
);
}
removeIRFilterOperators();
MutationObverver использует функцию detectFilterDialog
, чтобы определить, когда фильтр диалог добавлен в DOM. Когда это происходит, функция removeOperators
удаляет указанные опции из списка оператора. Все, что вам нужно сделать, это обновить массив filterOperatorsToRemove
, включив в него список операторов, которые вы хотите удалить.