cognos报表—知识整理
Cognos报表—知识整理
一、提示页自动加载
1、功能需求背景
华中电网概况报表首页需要有日期参数,但是每次进入首页时出现日期选择框影响美观,所以为其增加提示页面,但根据要求不能增加提示页面,所以设计出提示页面自动加载。通俗的讲就比如:出现提示页面,电脑自动点击确定进入主页面……
2、功能实现方法
步骤1:
新建提示页面,新页面中内容包括:onload项目、完成按钮、日期提示框以及针对提示框的html项目。如下图1
图1
步骤2:
Onload项目中函数:详见图1
function initMon(){
promptButtonFinish();}
二、进入页面后自动刷新一次
1、功能需求背景
电网概况报表电厂容量分析主页面中,需要自动根据日期刷新一次页面(具体原因参见三、特殊的日期过滤)
2、功能实现方法
步骤1:
Onload项目加载函数,如图2
图2
步骤2:
Js中函数新加一行代码,如图3
图3
3、可参考报表
电网概况报表>>1.电厂容量分析
三、特殊的日期过滤
1、功能需求背景
电网概况中发电情况包括水、火、风三种发电方式,在数据库中体现即为水(火、风)电机组管理(参数)表。根据用户要求,需要对全网水(火、风)当年新投机组容量等进行数据统计,
2、设计思想
1)将水、火、风机组管理表分别对应查询中取相同数据项,为U联做准备。
2)在三个查询中新建“投运年”数据项,取得机组投运年份。表达式:substr(【投运日期】,1,4)
3)将三个查询进行U联,给U联后的查询设置过滤条件,如图4
图4
3、出现问题分析
根据2、设计思想中进行操作,报表验证报错,不能对substr进行集操作,经查询得知,dm 数据库不支持在两层(原层和U联层)查询中同时使用substr。
4、新的解决方法
思路如下图:
步骤1:
从日期提示框中取出“年份”。
substring(ParamDisplayValue('结束日期'),1,4)
步骤2:
给取出的年份配html项目,以便读取……(见下图)
步骤3:
新增“文本框提示”,参数名为“年份”,为其配置html项目,以便读入年份及隐藏。(见下图)
步骤4:
读取数据,详见js截图
步骤5:
取得年份参数,为查询增加过滤条件……
5、可参考报表
电网概况报表>>1.电厂容量分析
四、js控制的条件块跳转
1、功能需求背景
电网概况中,用户需要了解变电站的详细信息,但是通过列表的方式无法展示变电站所有信息,所以我们通过新增条件快,通过js触发条件块跳转,获得详细信息。
2、需要组件
1)点击对象对应的html项目:
2)页面变量(比较固定)
3)对应js代码
3、功能实现思路
点击“查看”,触发函数onclick="setInputValue(this);js中的对应函数起到触发条件块转变作用!
4、注意事项
Js控制的条件块跳转,要注意参数传递问题!例如,电网概况中,条件块跳转实现的都是根据概况信息跳转查看详细信息,以变电站为例,只想看到一个变电站的详细信息,所以传递参数必须保证唯一性!
5、可参考报表
电网概况报表>>5.电厂机组管理
五、调度值班用日期
1、功能描述
根据选择的年月,判断该月有多少天和每天对应的星期,并将周末显示红色,效果图如下:
2、功能实现方法1)制作界面如下
2)js代码实现
3、可参考报表
六、鼠标移动,对应列表行变色
1、功能效果图
2、功能实现方法
步骤一:增加html项目
Html项目中js代码:
步骤二:增加css标签
Css标签中内容
3、可参考报表
任何已经完成的报表
七、特色表头(滑动出现标签)
1、功能需求背景
福建调度安全分析报表迁移到华中,因为单张报表比较独立,报表之间没有关联,因此在每张报表中都添加了所有报表名称的标签,随之而来了一个问题,标签过多,严重影响美观……
2、制作效果图
3、功能实现方法
3.1、制作界面
3.2、实现思路
通过div标签区分出不同级别的标题,通过js代码实现鼠标滑动到哪里,哪些标签隐藏,哪些显示的具体功能……
3.3、实现功能代码
3.3.1、css代码
具体js代码:
h4,div,ul,li,span{ padding:0px; margin:0px}
/* 最外面DIV的样式*/
#slidingBlock {
over-flow:hidden;
margin:0;
height:60px;
border:0;
}
#nav_box{
width:458px;
text-align:center;
margin: 0;
}
#slidingBlock a{
color:#fff;
cursor:hand;
text-decoration:underline;
}
#slidingBlock h4 {
float:left;
width:78px;
line-height:27px;
text-align:center;
font-size:12px;
over-flow:hidden;
float:left;
}
#slidingBlock h4.menuNo {
background-image: url(../samples/images/biaoqian2.jpg); background-repeat: no-repeat;
}
#slidingBlock h4.menuOn {
background-position: 0px;
color:#fff;
background-image: url(../samples/images/biaoqian1.jpg); background-repeat: no-repeat;
}
#line{
width:5px;
height:27px;
float:left;
}
#slidingBlock DIV.slidingList_none {
display:none
}
#slidingBlock DIV.slidingList {
width:500px;
margin-top:17px;
clear:both;
background-color: #009999;
}
#slidingBlock DIV.slidingList ul {
margin:0px;padding:0px; list-style:none; }
#slidingBlock DIV.slidingList li {
float:left;
height:20px;
line-height:20px;
font-size:12px;
text-indent:15px;
}
3.3.2、第一个div标签
3.3.3、一级标题
3.3.4、div-list1标签
3.3.5、a标签
3.4、更换亮色标签
通过标签进入不同类型下的报表时,点击进入后要实现大类型的光亮,小标题显示黄色。下面举例说明:
从【计划跟踪>潮流裕度】跳转到【预防控制>煤情分析】
4、可参见报表
调度安全分析报表
八、鼠标移动到列表,箭头所指向相应的行变色。
在
代码如下:
var x = document.getElementsByTagName("highlight");
for (i = 0;i { var tablerow=x[i].parentElement.parentElement; var temp; if(i%2==0) { tablerow.className="ji"; } else { tablerow.className.replace("ji",""); tablerow.className="ou"; } tablerow.onmouseover=function() { temp=this.className; this.className="over"; //this.className用来设置样式;鼠标悬停在上面的时候,over是样式内容,over接下面里的内容(用来设置背景颜色和边框颜色)} tablerow.onmouseout=function() { this.className=this.className.replace("over",""); //清空样式,把over后面的内容用空格代替 this.className=temp; } } tr:hover,tr.over{background-color:ff6c00;color:ffffff;} //hover是鼠标滑过时的样式 九、条件快跳转“背景图片”转换 背景图片../samples/images/daohang02.bmp 十、图片隐藏和显示 显示:(出现隐藏图表提示) 隐藏:(出现显示图表提示) 点击位置1,位置3处的图标隐藏…… 设置: 位置1: showText:标记位置id onclick:单击事件触发位置4中showing函数。 style=”cursor:hand;”:鼠标移动到这里,变成手型。 位置2: 位置4:function showImg(el){ var img = document.getElementById("showImage"); var txt = el; if(img.style.display == "none"){ img.style.display=""; txt.innerHTML="隐藏图表"; }else{ img.style.display="none"; txt.innerHTML="显示图表"; }//具体的显示图表和隐藏图表的执行函数。 十一、挂流程图和表单 Javascript中加函数 function showtree1(el){ var td = el.parentElement; var flowid = td.getElementsByTagName("div")[0].innerText; var tdSpan = document.getElementById("FlowurlDiv"); var ipinfo= tdSpan.innerText; var url = ipinfo+flowid; //alert(url); window.showModalDialog(url,"","dialogWidth:1100px;dialogHeight:800px;dialogTop:100px; dialogLeft,100px"); } 底层IP: