ITPub博客

首页 > 大数据 > 数据挖掘 > BIEE header栏新增下拉菜单

BIEE header栏新增下拉菜单

数据挖掘 作者:songjiali612 时间:2015-07-16 14:57:14 0 删除 编辑

 

BIEE header栏新增下拉菜单:

简述

BIEE提供了对外开放的接口,使得global header中可以添加链接按钮,但无法提供header上的下拉菜单。

参见《System Administrator's Guide for Oracle Business Intelligence Enterprise Edition》的Providing Custom Links in Presentation Services章节。

 

但通过修改BIEE相应的js,其实是可以在header栏中添加下拉菜单的。

通过chrome浏览器的脚本跟踪,可以看到BIEE的header栏是通过header.js脚本生成的。

header.js脚本存在于四个目录(BIEE HOME= D:\app\OBI):

?  原始ear目录:D:\app\OBI\Oracle_BI1\bifoundation\jee\analytics.ear\analytics.war\res\b_mozilla

(上述路径为ear和war包解压形成)

?  Web目录:D:\app\OBI\Oracle_BI1\bifoundation\web\appv2\res\b_mozilla

?  Domail临时目录silp1v:D:\app\OBI\user_projects\domains\bifoundation_domain\servers\AdminServer\tmp\_WL_user\analytics_11.1.1\silp1v\war\res\b_mozilla

?  Domail临时目录z45ouk:

D:\app\OBI\user_projects\domains\bifoundation_domain\servers\AdminServer\tmp\_WL_user\analytics_11.1.1\z45ouk\analytics.war\res\b_mozilla

注意:Domail临时目录可被删除,在下次启动weblogic中间件时,会从ear重新解压复制相应文件到临时目录中。

 

增加header栏下拉菜单时,建议修改ear目录和web目录的header.js脚本,然后复制到domail临时目录中。

 

修改思路

初始状态下,header栏已经有较多的下拉菜单,如“仪表盘”、“新建”、“打开”…,可以参考这些下拉菜单的生成方法,复制并修改相关代码,生成新的下拉菜单。

 

如本次新增下拉菜单就参考了“新建”的生成方法:

“新建”菜单的生成命令如下(header.js,523行):

k.push(new saw.header.Menubar.MenuModel("new",saw.header.getLocalizedString("kmsgHeaderNew"),saw.header.getResUrl("catalog/new_ena.png"),new obips.Callback(this,this.onNewMenuClicked),new obips.Callback(this,this.onDisplayNewMenu),saw.header.getLocalizedString("kmsgHeaderNewDropDownMenu")));

k.push(null)

 

解读代码:

saw.header.getLocalizedString("kmsgHeaderNew")获取的是菜单的localized名称

saw.header.getResUrl("catalog/new_ena.png")获取的是菜单旁图标的引用

new obips.Callback(this,this.onNewMenuClicked)表示菜单可进行点击相关操作

new obips.Callback(this,this.onDisplayNewMenu)表示菜单的下拉显示对象(主要)

saw.header.getLocalizedString("kmsgHeaderNewDropDownMenu")表示下拉动作的localized命名

 

经过调整,新加命令如下,代码位置可置于上述代码之后:

(可根据具体需要来重新定义位置,此段代码加在“新建”代码之后,新增的菜单位置即在“新建”菜单之后,同理:如加在“仪表盘”代码之后,则位置即在“仪表盘”菜单之后)

k.push(new saw.header.Menubar.MenuModel("new",saw.header.getLocalizedString("kmsgHeaderNew1"),saw.header.getResUrl("catalog/new_ena.png"),new obips.Callback(this,this.onNewMenuClicked),new obips.Callback(this,this.onDisplayzhangcMenu),saw.header.getLocalizedString("kmsgHeaderNewDropDownMenu1")));

k.push(null)

 

注意上述代码中红色部分:

kmsgHeaderNew1表示为新加入的菜单新生成一个localized名称

kmsgHeaderNewDropDownMenu1表示为新菜单的下拉菜单新生成一个localized名称

关键的onDisplayzhangcMenu表示点击菜单时引用的新function

注:生成localized名称的方法在“附:修改localized名称”中详述

 

onDisplayzhangcMenu及相关代码如下:

saw.header.NavBar.prototype.onDisplayzhangcMenu=function(c,b){

this.zhangcMenuDiv=saw.createChildElement(document.body,"div","HeaderPopupWindow");

this.zhangcMenuDiv.id="zhangcMenuHeaderMainDiv";

h="http://www.baidu.com";

u="http://www.google.com.hk";

v=this.createzhangcLink()+":zhangc";

w=" target="_blank"";

document.getElementById("zhangcMenuHeaderMainDiv").innerHTML="baidu
google
Current Path";

saw.header.Menubar.getManager().showPopupPanel(c.menuSpan,this.zhangcMenuDiv);

}

;

 

saw.header.NavBar.prototype.createzhangcLink=function(){

var a="";

var c=document.getElementById("idViewStateDiv");

var g=c.getAttribute("statePath");

var e=obips.views.ViewController.getController(g);

a+=saw.commandToURL("Dashboard");

a+="&PortalPath="+saw.encodeURIComponent(e.getViewEnvParam("PortalPath"));

a+="&Page="+saw.encodeURIComponent(e.getViewEnvParam("Page"));

var f="";

var i=document.getElementById("idPageID");

f=i.getAttribute("pageID");

a+="&PageIdentifier="+saw.encodeURIComponent(f);

return a}

;

此段代码可放置在“新建”菜单对应的显示function:onDisplayNewMenu之后,具体位置可自订。

saw.header.getResUrl("catalog/new_ena.png")如果需要修改,也可参照生成localized名称的方法自行调整。

 

结果显示

修改完header.js文件后,复制到前文提及的4个目录中,重启BIEE(中间件)即可出现新的的header栏。

 

新增菜单栏的效果如下:

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28622091/viewspace-1735165/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-02-04

  • 博文量
    6
  • 访问量
    13726