一.前言
在项目实施中,设计统计部分经常会使用图表进行显示,在Extjs3中内置了图表控件,但实际表现无法达到3D的美观效果,通过查找FusionChart可以实现比较美观的3D或2D图表显示。
注:FusionChart是个商业图表,不过有免费版本使用. 官方网站:http://www./
二 实现方法
1:在Extjs中使用FusionChart需要使用到第三方插件uxChartPack(目前版本2.13,下载地址:http://code.google.com/p/uxmedia/downloads/list),在使用FusionChart前,页面中需要引用uxmedia.js uxflash.js uxchart.js uxfusion.js四个文件。
2:代码举例:
笔者使用的是弹出式窗体显示Chart方式:
function _Count()
{
var mk=new Ext.LoadMask(Ext.getBody(),{
msg:'正在加载数据,请稍候!',
removeMask:true//完成后移除
});
mk.show();
Ext.Ajax.request(
{
url:"CountFileManager.asp?FileCtype=30", //后台返回Chart需要的数据
success:function (response)
{
var Result=Ext.decode(response.responseText);
if(Result.flag!=0)
{
;
}else if(Result.flag==0)
{
var strXml=Result.strXML;
strXml="<chart caption='发布文件统计' subCaption='按发布单位统计' xAxisName='单位' yAxisName='文件数' rotateYAxisName='1' showValues='1' decimalPrecision='0' showNames='1' baseFontSize='12' outCnvBaseFontSiz='20' numberSuffix=' 个' pieSliceDepth='30' formatNumberScale='0'>"+strXml+"</chart>"; //构造FusionChart需要的XML格式数据,这里面属性,可参考官方文件。
var fusionPanel=new Ext.ux.Chart.Fusion.Panel({
collapsible:false,
chartCfg:{
id:'chart1',
params:{
flashVars:{
debugMode:0,
lang:'EN'
}
}
},
autoScroll:true,
id:'chartpanel',
chartURL:'charts/Column3D.swf',//定义图表显示类型,例如:直方,饼图等
dataXML:strXml,
width:500,
height:310
});
var Fwin=new Ext.Window(
{
name:'Fwin',
width:'520',
height:'330',
layout:'fit',
closeAction:'close',
title:'统计图表显示',
buttonAlign:'center',
resizable:true,
modal:true,
items:[fusionPanel],
buttons:[
{
text:'退出',
iconCls:'icon_exit',
handler:function(){Fwin.close();}
}]
});
mk.hide();
Fwin.show();
}
},
failure:function (response)
{
mk.hide();
Ext.Msg.alert("提示","服务器请求错误,请稍后再试!");
}
});
}
服务器端返回字符:
{success:true,flag:0,strXML:"<set name='动力TEAM' value='1' /><set name='行政人事部' value='1' /><set name='
研发中心' value='117' /><set name='运管部' value='38' /><set name='制造部' value='34' /><set name='资产财务部' value
='1' />'"}
注意:服务器端返回字符串的格式
这里面要注意:页面文件保存为utf-8格式,可消除中文乱码现象,不同FusionChart版本,在Y轴方向存在显示中文BUG,目前3.1版本可解决中文乱码问题(注意是Y轴标签进行了旋转,如上述的rotateYAxisName='1'属性,当然也可rotateYAxisName='0',不进行旋转,可保证Y轴中文正常显示)
三、部分FusionChart属性说明:(转摘至其他网站,供参考!)
FusionCharts参数说明
功能特性
animation 是否动画显示数据,默认为 1(True)
showNames 是否显示横向坐标轴(x轴)标签名称
rotateNames 是否旋转显示标签,默认为0(False):横向显示
showValues 是否在图表显示对应的数据值,默认为1(True)
yAxisMinValue 指定纵轴(y轴)最小值,数字
yAxisMaxValue 指定纵轴(y轴)最小值,数字
showLimits 是否显示图表限值(y轴最大、最小值),默认为1(True)
showColumnShadow 是否显示各条形图间的阴影(若柱面图在一起并列的话)
showAlternateHGridColor 是否隔行显示不同颜色
图表标题和轴名称
caption 图表主标题
subCaption 图表副标题
xAxisName 横向坐标轴(x轴)名称
yAxisName 纵向坐标轴(y轴)名称
imageSave='1' 是否保存图片
imageSaveURL='Path/FusionChartsSave.jsp '图片路径
hoverCapSepChar=','。鼠标放到柱面上时显示的提示信息的分隔符
showhovercap='1' 鼠标放到柱面上时是否显示提示信息
hoverCapBgColor=‘ffffff’提示信息背景颜色
图表和画布的样式
bgColor 图表背景色,6位16进制颜色值
canvasBgColor 画布背景色,6位16进制颜色值
canvasBgAlpha 画布透明度,[0-100]
canvasBorderColor 画布边框颜色,6位16进制颜色值
canvasBorderThickness 画布边框厚度,[0-100]
shadowAlpha 投影透明度,[0-100]
showLegend 是否显示系列名,默认为1(True)
字体属性
baseFont 图表字体样式
baseFontSize 图表字体大小
baseFontColor 图表字体颜色,6位16进制颜色值
outCnvBaseFont 图表画布以外的字体样式
outCnvBaseFontSize 图表画布以外的字体大小
outCnvBaseFontColor 图表画布以外的字体颜色,6位16进制颜色值
分区线和网格
numDivLines 画布内部水平分区线条数,数字
divLineColor 水平分区线颜色,6位16进制颜色值
divLineThickness