示例说明
在仪表盘页面的 dashlet 资源任意位置(包括空白地方)点击都跳转到目标报表。对于这样的需求,实现方法如下。
设置方法
- 在“定制 -> 门户定制”界面创建和案例类似的页面。 在“定制 -> 宏管理”界面的左边资源树上找到对应页面,右击“资源定制”节点下创建和案例类似的页面。
- 选中页面,右键选择 编辑宏 进入报表宏界面,右击“编辑宏”菜单项,打开宏代码编辑界面。
- 在报表宏界面新建客户端模块。在弹出的新建模块对话框中选择对象为 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); } }; |