Pentaho - 使用Echarts

wylc123 1年前 ⋅ 259 阅读

上传echarts的js文件

 

echarts 使用时,需要引入“echarts.min.js”文件,而如果有 echarts 地图的话,还要引入“china.js”文件。

 

在 Browse Files 中,先新建一个 js 文件夹,然后,通过 upload 来上传 “echarts.min.js” 和“china.js”文件到 Server 中。

 

uploadfile.jpg

 

新建看板,引入资源

 

新建一个看板,并保存,之后点击“setting”来设置此看板引入 js 的方式,去掉 使用 requireJS support 的勾选(重要)

如果勾选的话,引入的js文件将是通过 requireJS 来加载的,当引入 china.js 时,会有问题,因此这里不使用此方式引入js

而是 使用 <script></script>标签的形式来引入。

 

setting.jpg

 

并通过“添加资源”按钮,资源类型选择“Javascript”,来源选择“External File”,点击“OK”

 

add resource.jpg

 

添加一个元素后,设置属性

Name:echarts

Resource file:点击 ① 处的按钮,选择之前上传到 public/js 文件夹下的 echarts.min.js 文件

然后点击 ② 处的按钮,复制一份这样的元素

设置属性,并引入 public/js 文件夹下的 china.js 文件

 

add file.jpg

 

这样资源的引入就完成了。

 

添加HTML,并展示一个条形图

 

在Echarts官网,先找一个简单的Demo,在这里展示一下。

 

我们先在看板上“添加一行”,再“添加一列”,再“添加html”,

并设置html元素的HTML属性为:<div id='container' style='width:100%;height:600px'>loading...</div> 

这个container来放echarts图表

注意:html要正确,错误的话,也不显示图表

 

addrow.jpg

 

我们再点击“添加资源”按钮,新建一个 JavaScript 文件,类型为 Code Snippet(内置脚本)

需要将其位置放在 最下面,因为js脚本是从上到下执行的。

 

myjs.jpg

 

设置属性:

name:myjs

resource code为:

 

折叠

function chartSet(ele,option){  
    var dom = document.getElementById(ele);    var myChart = echarts.init(dom);    var app = {};    
    if (option && typeof option === "object") {        myChart.setOption(option, true);    }}function getBarOption(){    return {            title: {            left: 'center',            text: '',             textStyle:{                    color:'#fff'                }        },        tooltip: {            trigger: 'axis',               
        },        xAxis: {            type: 'category',            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],            axisLabel:{                rotate:45,                color:'#fff',                fontSize :8            },            splitLine : {                show:false            }        },        yAxis: {            type: 'value',             axisLabel:{                rotate:45,                color:'#fff',                fontSize :8            },            splitLine : {                show:false            }        },        series: [{            center: ['55%', '40%'],            data: [120, 200, 150, 80, 70, 110, 130],            type: 'bar',            show:true,            label:{                rotate:90            }        }]    };}function initChart1(){    
    var option = getBarOption();    option.title.text='订单量  top 10';    
    chartSet('container',option);}function init(){    
    initChart1();    }$(function(){    init();});

 

设置好之后,点击预览

 

result.jpg

 

结果就出来了。

 

echarts数据从数据源获取

 

在 Pentaho - CDA 中,我们说到 CDA Query Url,这就是一个 api 接口一样的东西。

我们将这里面的数据展示出来,我们需要修改的只是 myjs 中的 initChart1 方法,为option重新赋值

 

折叠

function getCDAData(url){    var result;    $.ajax({        type:'get',        url:url,        async:false,        success:function(data){            result = data;        }    });    return result;}function initChart1(){    
    
    var result = getCDAData('/pentaho/plugin/cda/api/doQuery?path=/public/demo/pentahodemo.cda&dataAccessId=query1');    
    
    //var option = getLineOption();    var option = getBarOption();    
    var xdata = [];    var ydata = [];    for(var i=0; i<result.resultset.length; i++){        xdata.push(result.resultset[i][0]);        ydata.push(result.resultset[i][1]);    }     option.title.text='订单量  top 10'    option.xAxis.data = xdata;    option.series[0].data = ydata;    
    chartSet('container',option);}

 

需要注意的是,这个 Query Url 的地址,是从 /pentaho 开始的,没有写具体的服务器地址,保证迁移后,正常可用。

 

 

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: