BIEE引入JS等展现方式--更新--未完待续

浏览: 6980

由于BIEE自身的展现方式有限,并且不能人为修改,不能满足一些业务需求(有些纯粹是领导觉得不好看,弄个好看点的),所以很多项目都需要引入其他展现方式来满足展现。但是很多人又不知道怎么用,所以写了这篇文章给大家说说。

可以引用的展现方式有很多种,但是目前来说国内用的比较多的基本上就echarts或者D3,因为这两种是免费的,而且能够满足大部分需求,当然,要是不能满足可以花钱买highcharts等工具。

highcharts:http://www.hcharts.cn/(收费)

echarts:http://echarts.baidu.com/

D3 :http://d3js.org/

如果大家有什么好的产品,可以留言,大家都研究研究。下面开始步入正题:

     需要注意的是,首先需要激活BIEE服务器中的analyticsRes,才能对进行BIEE图形界面展示的修改(这个我想大家都知道怎么做,这里我就不做介绍了)

     如何在BIEE中引入JS等展现方式,这里我用三个不同的产品介绍,由简入深。

一、用叙述引入Dreamweaver生成的HTML代码:

1、在标准中添加字段

注:(@后面跟的数字,是标准中列的第几个,跟结果中的列的顺序没有任何关系,初学者不要弄混了)

Clipboard Image.png

2、然后在结果中添加叙述

Clipboard Image.pngClipboard Image.png

3、然后在叙述中添加代码

注意:要勾上“包含HTML标记”前面的选项,嵌入代码,就可以使用了。需要引用标准中数据,直接使用@就可以了。

要显示的行,定义为1,好奇的可以看看不定义为1是什么情况。

Clipboard Image.png

关于编辑工具的话,新手推荐直接使用Dreamweaver,编辑好需要的样式,直接将代码粘贴到叙述中就可以使用了,上面用的就是这个方法


另外说一个关于国内的不对齐表头的情况,理论上用这个方法也可以实现,但是具体的实施我没有做过,有这样的需求的可以考虑用这个方式试试看看



二、叙述引入百度echarts代码

百度弄了个好东西--echarts,这个东西完全开源免费,而且支持在线修改预览,也可以把代码包下载到服务器上,这样就可以在断网的情况下在线修改预览。而且度娘给出了配置手册,这样就可以针对性的修改了,不得不说度娘做了一件好事,前段时间推销的“魔镜”的大数据产品,前台展现完全就是echarts的引用,代码都没修改。

1、模块化单文件引入

http://echarts.baidu.com/doc/doc.html,这个文档中介绍了图表类型,名词解释,说到底就是告诉你,我这里有这么个东西,叫什么名字,怎么用。后面的单文件引入告诉你怎么把echarts引入到界面中使用。这里我给大家简单明了的用法,不用看那个引入文档了。

首先,找到你想用的实例,打开,就会看到下面的实例,然后将左边黑色背景区的代码进行编辑,得到你想要的样子(点击刷新,右边的图形才会根据左侧的修改进行变化),编辑完成后,拷贝代码,放到图下面的“空白君”那里。就可以了。

有的会在最下面放一个随机数值生成的代码,注意用不到的话要去掉。

还有最重要的一个,找到下面代码的require,在function上面,'echarts/chart/map',看见没,就这个,看到后面的备注没,按需加载,按需加载,按需加载,重要的事情说三遍。“需”是指你要用到的图形,这个自己去上面的文档中找对应吧

Clipboard Image.png

<html>
<head>
    <meta charset="utf-8"/>
    <title>自己起名字</title>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="mainb" style="height:500px;width:600px"></div>
    <!-- ECharts单文件引入 -->
    <script src="/analyticsRes/echarts/build/dist/echarts.js"></script>
    <script type="text/javascript">
        // 路径配置
        require.config({
            paths: {
                echarts: '/analyticsRes/echarts/build/dist'
            }
        });
       
        // 使用
        require(
            [
                'echarts',
                'echarts/chart/gauge' // 使用柱状图就加载bar模块,按需加载
            ],
            function (ec) {
                // 基于准备好的dom,初始化echarts图表
                var myChart = ec.init(document.getElementById('mainb'));
               
                var  
-------------------------------------我是华丽的分割线---------------------------------------


请叫我空白君


-------------------------------------我是华丽的分割线---------------------------------------
                // 为echarts对象加载数据
                myChart.setOption(option);
            }
        );
    </script>
</body>
</html>

需要注意几个地方:

1. 重要的事情说三遍;

2. 引用的路径正确性;

3. ID不要用main,自己换个名字;

4. option和分割线的var要放在一行。

暂时就这么多注意点,想起来了再增加

2、数组的处理

单文件引入的,只是针对只有一个值的情况,但是实际中有很多数组引用的情况,我这里就贴出来一个例子,你们看看我是怎么引用的,怎么对数组进行处理的,个人认为一看就会,我就不多说什么了,要是有什么不明白的,请留言。

这里的实例用的是地图文件

标准

Clipboard Image.png

结果

Clipboard Image.png

前缀内容:

     <!DOCTYPE html>
<html>
     <head>
          <meta charset="utf-8">
          <title></title>
     </head>
     <body>
    <div id="mainb" style="height:500px;width:700px"></div>
    <script src="/analyticsRes/echarts/build/dist/echarts.js"></script>
    <script type="text/javascript">
    
        require.config({
            paths: {
                echarts: '/analyticsRes/echarts/build/dist'
            }
        });
Y1=[];
XXXX=[];
叙述内容:
     Y1.push('@1');
XXXX.push('@2');
后缀内容:
     var dataobj=[];
          for(var i=0;i<Y1.length;i++){
               dataobj.push({name:Y1[i],value:XXXX[i]})
          }
require(
            [
                'echarts',
                'echarts/chart/map' // 使用柱状图就加载bar模块,按需加载
            ],
            function (ec) {
                // 基于准备好的dom,初始化echarts图表
                var myChart = ec.init(document.getElementById('mainb'));
               
                var option = {
    title : {
        text: '订单量',
        subtext: '纯属虚构',
        x:'center'
    },
    tooltip : {
        trigger: 'item'
    },
    legend: {
        orient: 'vertical',
        x:'left',
        data:['订单量']
    },
    dataRange: {
        x: 'left',
        y: 'bottom',
        splitList: [
            {start: 1500},
            {start: 900, end: 1500},
            {start: 310, end: 1000},
            {start: 200, end: 300},
            {start: 10, end: 200, label: '10 到 200(自定义label)'},
            {start: 5, end: 5, label: '5(自定义特殊颜色)', color: 'black'},
            {end: 10}
        ],
        color: ['#E0022B', '#E09107', '#A3E00B']
    },
    toolbox: {
        show: true,
        orient : 'vertical',
        x: 'right',
        y: 'center',
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    roamController: {
        show: true,
        x: 'right',
        mapTypeControl: {
            'china': true
        }
    },
    series : [
        {
            'name': '订单量',
            type: 'map',
            mapType: 'china',
            roam: false,
            itemStyle:{
                normal:{
                    label:{
                        show:true,
                        textStyle: {
                           color: "rgb(249, 249, 249)"
                        }
                    }
                },
                emphasis:{label:{show:true}}
            },
            data:dataobj
        }
    ]
};
                   
                  myChart.setOption(option);
            }
        );
    </script> 
     </body>
</html>
推荐 6
本文由 铁皮罐头 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

25 个评论

帮罐头推荐下,加油啊,代码可以放到 代码编辑器里面,看着好看一些,有格式。。目录做的不错,支持下。
这东西能弄成动态的吗?
你说的动态是指什么样的,图像是动态显示的么,可以实现,如果要实现交互的话,就需要编码了
谢谢帮我做后期修改
是啊,需要交互啊,但BIEE里面怎么编码呢?
写JS实现动态显示是完全可以实现的,如果需要做超级链接的操作,BIEE可以通过带参数的链接来完成。具体参数传递的过程 ,就需要JS来实现了,具体没有实现过,因为我JS水平非常一般
请问可以实现地图功能的下钻么?
是否能实现下钻的功能,就要看JS是怎么写的了,理论上来说,是可以实现的。但是现在网上公开的代码中,很少有支持下钻功能的,百度的echarts里面实现了联动。如果要实现下钻,就需要写JS代码的人来实现这个功能
这个写得溜。
好的,谢谢。 需要注意的是,首先需要激活BIEE服务器中的analyticsRes,才能对进行BIEE图形界面展示的修改(这个我想大家都知道怎么做,这里我就不做介绍了)请问这里的意思是类似OBIEE的定制化的步骤还是什么哦?
二次开发的时候,需要在console里部署这个
你好,问一个问题,js能够模拟一个dashboard中提示器的 “应用” 事件?现在需要完成类似的功能,但是没有思路谢谢!
这个我还真没有尝试过。不过应该是可以的,你在源代码中找到调用的事件就可以了
hello, 有个问题想问下,我这边按照模块化单文件引入的方法引入的,然后部署路径和你样例一致,为何我这边建好叙述之后,提示我找不到视图模块。求指点可能那块错了
有没有加载analyticsres这个模块
噢 多谢大神回复,最终发现还是路径错了 lol, 不过现在遇到的问题是 一个仪表盘里面只能展示一个叙述,不能展示多个重复使用的分析的叙述
私信里给你回复了。你看看是不是这个问题导致的
可以支持,而且可以很灵活,不过确实是要写一些js代码的
比如d3的图表,在你用d3操控svg元素的时候,就需要把对应的下钻event连同数据一起绑定上去
米饭

米饭 回复 LH_LD

给你个思路,要么用js,要么用jq来做,jq会更简单一些,如下:
获取到biee标准应用按钮的dom元素,然后trace这个元素的click事件,就等于模拟了一次点击应用按钮
请问你这个解决了么?是怎么解决的。。。我现在想弄出一个表下面的刷新功能不知道怎么弄
罐头大神,请问OBIEE结合ECharts实现饼图下钻是怎么弄的呢? 网上基本上没有这方面公开的代码,刚实习了几个月,导师就让我一个人捣鼓这个了,,,这个问题捣鼓了很久都没什么进度
这个我还没遇到这样的需求,没有做过
我研究了2天,已经实现了。。。哈哈哈
照着我的做,不用两天
@铁皮罐头 把案例写得这么详细,太给力了

要回复文章请先登录注册