技术开发 频道

一种利用dojo动态创建图形报表的方法

  三、动态地创建图形报表

  在本节,介绍一下利用动态数据创建柱形图的方法。

  在第3节中可以看到,图形所显示的标签和数据都是静态的,都是写在方法里面的。如果每个星期的数据都有变化,或者X轴的标签要改变,不再显示星期,而是要显示汽车品牌,抑或是其它什么类型,我们应该怎么办呢?这时,有人会想到,再创建一个图形对象,然后传入相关数据。的确,如果数据变化不是很频繁,这也不失为一种解决问题的“懒”方法。但是,如果数据每天都在变化,该方法就会显得力不从心,下面就介绍一下动态数据的创建方法。

  创建图形对象后,主要有2个方法来控制图形展示的内容:一个是设置X轴的标签;一个是每个标签对应的数据大小。标签对应的数据,其实就是一个数组,这个比较简单。下面主要介绍一下X轴的标签。

  仔细观察第3节中X轴标签的设置方法,大家会发现,第2个参数其实是个对象,该对象里面有个labels属性,它对应的值是个数组类型,且数组中每个元素又是一个对象,对象里面又包含两个属性:一个是value指定索引位置;一个是text指定标签内容。因此,如果要传参数给addAxis()方法,就要遵循下面的方法:

  定义自定义对象

  代码如下:

function axisObject(){
this.labels=new Array();
}

  该对象表示addAxis()方法的第2个参数,labels是其属性。

function axisLabelObject(i,text){
this.value=i;
this.text=text;
}

  该对象表示labels数组中,每个元素对应的值。

  创建自定义对象的实例

var labelObj=new axisObject();
var labelNames=["BMW","Toyota","Bens"
,
"Honda","Audi","Nissan","BYD"]
var size=labelNames.length;
for(var i=0;i
//创建axisLabelObject对象实例,并赋值给labels数组
labelObj.labels[labelObj.labels.length]=
new axisLabelObject(i+1,labelNames[i]);
}

  把实例对象传递给addAxis()方法

chart.addAxis("x", labelObj);

  此时,该方法接受的不再是一堆静态的数据,而是一个动态的对象实例。这 样,我们就可以实现动态地展示频繁变化的数据,而不是创建多个图形对象。最终效果如图4所示:

一种利用dojo动态创建图形报表的方法
▲图4 动态数据展示

  四、结束语

  本文提供了一种动态创建dojo图形报表的方法。我们还可以对此方法进行加工、扩充。比如:当X轴显示的内容非常多,不能同时显示的时候,可以控制某些列的隐藏或展示来提供更加强悍的用户体验。从而,可以让我们的Web应用吸引到更多的潜在客户。

  五、参考资料

  [1]. http://www.ibm.com/developerworks/library/wa-dojocharts/

  [2].http://dojotoolkit.org/documentation/tutorials/1.6/charting/

  六、关于作者

  成小敏 软件开发工程师

  任职于某大型IT外资企业,主要从事Web2.0和J2EE的研究与开发,目前主要集中在 云计算方面(IaaS)的研发。此外,对javaFX、eclipse plugins和Android等技术也 感兴趣。

5
相关文章