在Congos报表中,实现术语解释功能

功能描述: 每张报表中增加术语解释功能,交互方式为 鼠标悬停报表指标名词时,触发显示指标定义.

                  

思路形成:1.Q:指标名称,指标定义,从那边读取?           

                    A: 考虑到指标名称/定义的可维护性,最好能从DB读取维表实现

                2.Q用什么方式实现?

                    A:考虑HTML+Javascript 实现

难点分析:1.从数据库读取每张报表对应的指标名称/定义数据,分别放在数组nameArr ,definitionArr中,并且存在对应关系.

                2.报表标题行查找数组nameArr,记录数组位置i,以此查找definitionArr对应的定义.

                3.报表发生翻页时,nameArr ,definitionArr要在每页都能读取到.

关键代码:1.将维表的数据放置在列表中,并初始化nameArr ,definitionArr

                  代码参考:

<script>

setTimeout("getKpiDes()",300);

var nmArray=new Array();

var desArray=new Array();

var fmtSize=0;


function getKpiDes(){

    var kDivObj = document.getElementById('kDiv'); 

    var kTabObj=kDivObj.firstChild;

     kDivObj.style.display = "none"; /*使用Cognos的可见属性,读取不到列表内容*/

       //获取KPI详解,指标名词数组nmArray,指标含义数组desArray

       var utrArr=kTabObj.getElementsByTagName('tr');

       for(var i=1;i<utrArr.length;i++)

       {      

              var wdArr=utrArr[i].getElementsByTagName('td');

              var kipNm=wdArr[0].innerText;         

              var kpiDes=wdArr[1].innerText;                     

              nmArray[fmtSize]=kipNm;

              desArray[fmtSize]=kpiDes;

              //alert(fmtSize+' :'+kipNm+' ,'+kpiDes);

              fmtSize++;

         }    

}

</script>    

2.标题行查找指标定义

var tltCol=6;      //标题起始列位置
var tltRow=1;     //标题起始行位置function getTitle(){
       var uDivObj = document.getElementById('uDiv'); 
       var uTabObj=uDivObj.firstChild;
       var utrArr=uTabObj.getElementsByTagName('tr');
       var wdArr=utrArr[tltRow].getElementsByTagName('td');//获取表格标题
       for(k=tltCol;k<wdArr.length;k++){
             var tltNm=wdArr[k].innerText;   
             wdArr[k].innerHTML = '<span style="cursor:hand">'+tltNm+'<img src="../rv/hellojim_images/kfpt_kpides.png" οnmοuseοver="showTitle(this,\''+tltNm+'\')" /></span>';
       }
}

 function showTitle(el,tltNm){           
             if( tltNm.indexOf(' ▲')>0 ||  tltNm.indexOf(' ▼')>0 )
             {
                  tltNm=tltNm.substring(0,tltNm.length-2);   
             }
             for(var i=0;i<fmtSize;i++){
                    if( tltNm==nmArray[i] )
                    {      
                           //alert(tltNm+': '+desArray[i]);  
                           el.title=desArray[i];  
                           break;
                    }
              }
}
</script>

<script>
setTimeout("getTitle()",300);
   
3.隐藏指标定义列表,

   注意点:确保每页读取到且列表本身不能分页(否则数据读不全),设置如下:


  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值