在 Oracle APEX 19.1 中确定 IR 滤镜的 functions/operators 列表
Determine the list of IR filter's functions/operators in Oracle APEX 19.1
有没有办法在 APEX 19.1 的交互式报表的行过滤器中隐藏一些 Functions/Operators?一些最终用户对他们不使用的许多 functions/operators 感到困惑。
感谢您的考虑。
如果您谈论的是 "Actions" 菜单,那么可以 - 转到 IR 的属性和 enable/disable 您想要的任何选项:
虽然 APEX 不支持开箱即用,但可以使用 JavaScript。每次显示过滤器对话框时,内容都会从服务器带到客户端并注入 DOM。您只需要在用户看到之前修改内容。实现此目的的一种方法是使用 MutationObserver 接口:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
以下是您可以遵循的一些步骤(已在 APEX 19.2 中测试):
- 转到交互式报告并将静态ID设置为my-irr。
转到页面级属性,将以下代码添加到函数和全局变量声明字段:
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
数组以包含您要删除的运算符列表。
有没有办法在 APEX 19.1 的交互式报表的行过滤器中隐藏一些 Functions/Operators?一些最终用户对他们不使用的许多 functions/operators 感到困惑。
感谢您的考虑。
如果您谈论的是 "Actions" 菜单,那么可以 - 转到 IR 的属性和 enable/disable 您想要的任何选项:
虽然 APEX 不支持开箱即用,但可以使用 JavaScript。每次显示过滤器对话框时,内容都会从服务器带到客户端并注入 DOM。您只需要在用户看到之前修改内容。实现此目的的一种方法是使用 MutationObserver 接口:https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
以下是您可以遵循的一些步骤(已在 APEX 19.2 中测试):
- 转到交互式报告并将静态ID设置为my-irr。
转到页面级属性,将以下代码添加到函数和全局变量声明字段:
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
数组以包含您要删除的运算符列表。