示例说明
在项目中需要显示多维分析报表的同时也要显示一些动态的说明。该问题可以通过宏实现,如下图:
设置方法
- 在“分析展现”节点,创建一张多维分析;
- 选中多维分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为olapQuery;事件为afterRefreshTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | olapQuery | afterRefreshTable |
宏代码
代码块 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
function main(olapQuery) { var grid = olapQuery.olapTable.domAgent.getElementByBofid("olap-grid"); var rowCount = 0; //表格总行数 var columnCount = 0; //列数 var isIE = browserinfo(); if (grid) { rowCount = grid.rows.length; if (isIE == 'IE') { columnCount = grid.rows(0).cells.length; } else { columnCount = grid.rows[0].cells.length; } } if (rowCount > 0 && columnCount > 0) { var html = ""; //静态文字 for (var i = 1; i < rowCount; i++) { //按行生成文字 var oneLine = buildLine(i); html += oneLine; } olapQuery.elemReportTail.innerHTML = html; //设置尾部内容 } function buildLine(lineNum) { var currentColumnCount = 0; if (isIE == 'IE') { currentColumnCount = grid.rows(lineNum).cells.length; } else { currentColumnCount = grid.rows[lineNum].cells.length; } var startColumn = currentColumnCount - columnCount + 2; //起始列 var line = "" + olapQuery.olapTable.getCellValue(lineNum, startColumn - 1) + " 销售情况,其中"; for (var i = startColumn; i < currentColumnCount - 1; i++) { line += olapQuery.olapTable.getCellValue(0, i); line += olapQuery.olapTable.getCellValue(lineNum, i); } //百分比特殊处理 var persentStr = olapQuery.olapTable.getCellValue(lineNum, currentColumnCount - 1); var myvalue = parseFloat(persentStr); if (myvalue > 0) { persentStr = "<font color=red >上升 " + persentStr + "</font>"; } else if (myvalue < 0) { persentStr = "<font color=red >下降 " + Math.abs(myvalue) + "%</font>"; } else { persentStr = "<font color=red >为零</font> "; } return line += "增长率<font color=red >" + persentStr + ";</font>"; } /*判断浏览器类型*/ function browserinfo() { var Browser_Name = navigator.appName; var Browser_Version = parseFloat(navigator.appVersion); var Browser_Agent = navigator.userAgent; var Actual_Version, Actual_Name; var is_IE = (Browser_Name == "Microsoft Internet Explorer"); //判读是否为ie浏览器 var is_NN = (Browser_Name == "Netscape"); //判断是否为netscape浏览器 var is_op = (Browser_Name == "Opera"); //判断是否为Opera浏览器 if (is_NN) { return "Netscape"; } else if (is_IE) { return "IE"; } else if (is_op) { return "Opera"; } else { return "other "; } } } |
资源下载
资源:migrate.xml