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

温馨提示

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

示例说明
 在某特定情况下,需要实现在报表跳转时,需要在指定大小的弹出窗口中打开目标页面。效果图:


 设置方法

  1. 在【资源定制】创建案例类似的页面。 
  2. 选中页面,右键选择 编辑宏 进入报表宏界面,右击【编辑宏】->创建【跳转规则向导】。
  3. 在双点打开已创建的跳转规则的action,在该界面中进行修改【跳转规则向导】生成宏代码,如下图:
     

宏类型

类型

对象

事件

ClientSide

simpleReport

onRenderTable

宏代码

//@smartbi.utility_macro:system.utils.JMClientUtils 
var jmUtils = use("system.utils.JMClientUtils");
var domutils = jsloader.resolve("freequery.lang.domutils");
function main(chartView, point, mouseEvent) {
    if (!chartView || !point) return;
    var aotuCmd = false;
    chartView.addMenuItem("新弹出窗口", callback, aotuCmd);
}
//点击跳转规则菜单触发的回调函数
function callback(chartView, point) {
    var simpleReport = chartView.getContext();
    var simpleReportContext = simpleReport.getContext();
    var pageContext = page.getContext();
    simpleReport.writeParamsToContext();
    var targetResId = "I2c91918a1cc607a1014d1d8f10ce0304";
    var newReport = false;
    //定义参数对象列表。
    var paramsInfo = new Array();
    //设置或收集参数值。
    var pObj = simpleReportContext.get("产品目录参数");
    if (pObj) {
        var paramInfo = createParamInfo("产品目标编号", pObj.value, pObj.displayValue);
        paramsInfo.push(paramInfo);
    }
    var pObj = point.getCurrentPointValueObj("产品名称");
    if (pObj) {
        var paramInfo = createParamInfo("产品名称参数", pObj.value, pObj.displayValue);
        paramsInfo.push(paramInfo);
    }
    /*  去掉原来的打开目录衣面的方式
 //新窗口打开资源
    //@smartbi.openOtherPage:"I2c91918a1cc607a1014d1d8f10ce0304" 
    if (domutils.isIOS() || domutils.isAndroid()) showInternalFrame(targetResId, paramsInfo);
    else page.openResourceInNewWindow(targetResId, paramsInfo);
*/
    //修改为弹出窗口打开目标页面
    var openUrls = "openresource.jsp?resid=I2c91918a1cc607a1014d1d8f10ce0304" + "&p" + "aramsInfo=" + lang.toJSONString(paramsInfo);
	 if (!domutils.isIE()){
        //for chrome
        window.open(openUrls, "newwindow", "height=400, width=600, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no");
    }else{
        window.showModalDialog(openUrls, null, "dialogWidth=600px;dialogHeight=400px;resizable=yes");
    }
    //window.showModalDialog(openUrls, null, "dialogWidth=600px;dialogHeight=400px;resizable=yes");
}
//创建参数信息
function createParamInfo(name, value, disValue, mergeType) {
    var paramInfo = new Object();
    paramInfo.name = name;
    paramInfo.value = value;
    paramInfo.displayValue = disValue;
    if (mergeType) paramInfo.groupType = mergeType;
    return paramInfo;
}

注意事项:相关报表中的参数名称必须是英文,参数值也必须是英文或数字。