示例说明
对于灵活分析,实现"根据角色不同控制【导出】按钮显示与否"。
现有灵活分析报表1,报表ID为:I4028818a5866e9ec0152256f44f933b6;灵活分析报表2,报表ID为: I4028818a5866e9ec015225708b143407。
报表1:
报表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 = ""; } } |
关键对象总结