页面树结构
转至元数据结尾
转至元数据起始

温馨提示

本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

示例说明

在仪表盘页面的 dashlet 资源任意位置(包括空白地方)点击都跳转到目标报表。对于这样的需求,实现方法如下。


设置方法

  1. 在“资源定制”节点下创建和案例类似的页面。 
  2. 选中页面,右键选择 编辑宏 进入报表宏界面,右击“编辑宏”菜单项,打开宏代码编辑界面
  3. 在报表宏界面新建客户端模块。在弹出的新建模块对话框中选择对象为 page,事件为 onRenderPage,并把下面的宏代码复制到代码区域。


 

宏类型

类型

对象

事件

ClientSide

page

onRenderPage

宏代码

function main(page, pageContext) {
    //debugger;
    // 点击各个dashlet中的报表时跳转
    for (var i = 0; i < page.dashletList.length; i++) {
        var dashlet = page.dashletList[i];
        var report = dashlet.getCurrentPortlet().getPortletObject();
        switch (dashlet.dashletType) {
        case "SPREADSHEET_REPORT":
            addSsReportClickListener(report, page);
            break;
        default:
            break;
        }
    }
 
    // 点击页面非报表区域,或点击非"电子表格"报表时跳转
    page.addListener(page.viewdiv, "click", clickFunction, page);
};
 
// 电子表格报表
function addSsReportClickListener(ssReport, page) {
    // debugger;
    if (ssReport.elemSheetFrame && ssReport.elemSheetFrame.contentWindow.document.documentElement) {
        setTimeout(function() {
            ssReport.addListener(ssReport.elemSheetFrame.contentWindow.document.documentElement, "click", clickFunction, page);
        },
        200);
    } else {
        setTimeout(function() {
            addSsReportClickListener(ssReport, page);
        },
        100);
    }
};
 
// 处理报表跳转
function clickFunction() {
    //debugger;
    var page = this;
    var targetResId = "If1ec36a435484560013548b6c7e604c3";
    //定义参数对象列表
    var paramsInfo = new Array();
    //新窗口打开资源
    if (domutils.isIOS() || domutils.isAndroid()) {
        showInternalFrame(targetResId, paramsInfo);
    } else {
        page.openResourceInNewWindow(targetResId, paramsInfo);
    }
};
  • 无标签