示例说明


对于灵活分析,实现"根据角色不同控制【导出】按钮显示与否"。

现有灵活分析报表1,报表ID为:I4028818a5866e9ec0152256f44f933b6;灵活分析报表2,报表ID为: I4028818a5866e9ec015225708b143407。

 

报表1:

报表2:


设置方法

  1. 公共设置中,创建一个资源包,并设置要起效的报表,报表包含”报表1“和”报表2“;

     
  2. 在资源包中,编写宏代码,根据角色不同控制【导出】按钮显示与否;
     

宏类型

类型

对象

事件

ClientSide

simpleReport

onRender

宏代码

//定义角色可以对那些报表使用导出按钮权限
var rolesToReports = {
    "Admins": ["I4028818a5866e9ec0152256f44f933b6", "I4028818a5866e9ec015225708b143407"],
    "demo": ["I4028818a5866e9ec015225708b143407"]
};
//获取当前用户的所有角色
function getAllRoles() {
    var roles = registry.get("allRolesOfUser");
    if (roles != null) return roles;
    var util = jsloader.resolve("freequery.common.util");
    var ret = util.remoteInvokeEx("UserService", "getMyAccountInfo", []);
    roles = new Array();
    if (ret && ret.result) {
        var rolesToGroupList = ret.result.allRolesOfUser;
        for (var i = 0; i < rolesToGroupList.length; i++) {
            var item = rolesToGroupList[i].rolesList;
            for (var j = 0; j < item.length; j++) {
                roles.push(item[j].role.name);
            }
        }
    }
    registry.put("allRolesOfUser", roles);
    return roles;
}
function main(simpleReport, simpleReportContext) {
    var roles = getAllRoles();
    var found = false;
    for (var i = 0; i < roles.length; i++) {
        var reps = rolesToReports[roles[i]];
        if (reps == null) continue;
        for (var j = 0; j < reps.length; j++) {
            if (simpleReport.queryId == reps[j]) {
                i = roles.length;
                j = reps.length;
                found = true;
            }
        }
    }
    var r = simpleReport;
    //根据结果设置导出按钮是否可见
    if (!found) {
        simpleReport.btnExport.parentNode.style.display = "none";
    } else {
        simpleReport.btnExport.parentNode.style.display = "";
    }
}

关键对象总结

 

资源下载:migrate根据角色不同控制导出按钮.xml