fushionChars画动态统计图
2013-08-15 21:41
288 查看
1. 准备fushionCharts资源包括js文件和swf文件,引用js文件<scripttype="text/javascript"src="fusioncharts31/js/FusionCharts.js"></script>
2. 这个例子是通过servlet获取数据,因此要编写一个获取数据的servlet类。这里是CertificatePStatistics类
public
voiddoPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
try {
getJSONData(request,response);
} catch (Exception e) {
logger.error(e.getMessage(),e);
}
}
/**
* 根据sql取得JSON格式的数据
*
* @return
* @throws IOException
*/
private
voidgetJSONData(HttpServletRequest req, HttpServletResponse resp)
throws WIZException,IOException {
try {
String sql = URLDecoder.decode(req.getParameter("SQL"),
SysData.UTF8);
// 根据jqGrid对JSON的数据格式要求给jsonObj赋值
JSONObject jsonObj = new JSONObject();
Document docData = BaseDB.executeQuery(sql);
jsonObj = JSONUtil.docRecord2JsonStr(docData,-1, -1);
resp.setCharacterEncoding(SysData.UTF8);
resp.getWriter().print(jsonObj);
/*resp.getWriter().print("12345");*/
} catch (Exception e) {
logger.error(e.getMessage(),e);
throw
new WIZException(e);
}
}
3. 配置类:在web.xml里添加配置语句:
4. 前台页面:
<div id="ceterficateGraficDiv"align="center"></div>
5. JS调用:
这里通过ajax获取数据并以json的形式返回。
<scripttype="text/javascript">
function statisticsShow() {
var departmentSql = document.getElementById("statisticsSQlTxt").value; //sql语句
$.ajax({
url : "/Web/CertificatePStatistics",//返回数据的类
dataType : "json",
type : "POST", //调用servle的post方法
data : {
SQL : encodeURI(departmentSql) //传sql参数
},
async : false,
error : function() {
alert("加载数据错误!");
return;
},
success : function(jsonData) {//将得到的数据封装在’jsonData’变量里
if
(jsonData.rows.length == 0) {
document.getElementById("ceterficateGraficDiv").style.display="none";
document.getElementById("statisticsTabDiv").style.display="none";
return;
}
document.getElementById("ceterficateGraficDiv").style.display="";
document.getElementById("statisticsTabDiv").style.display="";
//alert(jsonData.rows[0].STATUS);
/*开始用jsonData编制XML文件,按照fushionchart的例子编制XML文件
*/
var
data = "<chart palette='2' caption='' xAxisName=''yAxisName='' ";
data+="showValues='0' decimals='0' formatNumberScale='0'unescapeLinks='0'>";
/*XML:categories*/
data += "<categories>";
var
differName="";
for
( var i = 0; i < jsonData.rows.length; i++) {
varrowData = jsonData.rows[i];
varlabelName = rowData.LABEL_NAME;
if(labelName != differName) {
data +=
"<categorylabel='"+labelName+"'/>";
differName = labelName;
}
b79b
}
data += "</categories>";
var
seriesLabel = new Array("已登记","已注册","预警",
"失效");
for
( var i = 0; i < seriesLabel.length; i++) {
data += "<datasetseriesName='"+seriesLabel[i]+"'>";
differName = jsonData.rows[0].LABEL_NAME;
varflag =false;
for(var
j = 0; j < jsonData.rows.length; j++) {
varrowData = jsonData.rows[j];
varlabelName = rowData.LABEL_NAME;
varstatus = rowData.ECSTATUS;
if(labelName == differName) {
if(seriesLabel[i] == status) {
data +=
"<set value='"+rowData.NUM+"' ";
//向下钻取,弹出窗,带参数。fusionCharts绘图要求xml文件里,双引号之间不能出现单引号,因此传参数时需要先htmlEncode ,解参数时需要htmlDecode data+="link='P-detailsWin,width=800,height=200,toolbar=no,scrollbars=yes,resizable=no,location=no,"
//将弹出窗放在页面中间 data+="left="+(screen.width-800)/2+",top="+(window.screen.availHeight-200)/2+",";
data+="resizable=no-Test.html?flag="+getDrillCondition(labelName)+"'/>";
/* data+="<setvalue='"+rowData.NUM+"'/>"; */
flag = true;
}
} else{
if(flag ==false) {
data +=
"<setvalue='0'/>";
}
if(seriesLabel[i] == status) {
data +=
"<set value='"+rowData.NUM+"' ";
data+="link='P-detailsWin,width=800,height=200,toolbar=no,scrollbars=yes,resizable=no,location=no,"
data+="left="+(screen.width-800)/2+",top="+(window.screen.availHeight-200)/2+",";
data+="resizable=no-Test.html?flag="+getDrillCondition(labelName)+"'/>";
/* data+="<setvalue='"+rowData.NUM+"'/>"; */
flag = true;
} else{
flag = false;
}
differName = labelName;
}
}
if(flag ==false) {
data +=
"<setvalue='0'/>";
}
data += "</dataset>";
}
data += "</chart>";
//alert(data);
//document.getElementById("statisticsSQlTxt").value=data;
var
ecCharts = new FusionCharts(
//画多维表时需要用*3D.swf,否则会报’invalid xml data’错误 "fusioncharts31/charts/MSColumn3D.swf",
"ceterficateGraficDiv1","800","400",
"0", "1");
ecCharts.setDataXML(data);
ecCharts.render("ceterficateGraficDiv");
}
});
}
</script>
2. 这个例子是通过servlet获取数据,因此要编写一个获取数据的servlet类。这里是CertificatePStatistics类
public
voiddoPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
try {
getJSONData(request,response);
} catch (Exception e) {
logger.error(e.getMessage(),e);
}
}
/**
* 根据sql取得JSON格式的数据
*
* @return
* @throws IOException
*/
private
voidgetJSONData(HttpServletRequest req, HttpServletResponse resp)
throws WIZException,IOException {
try {
String sql = URLDecoder.decode(req.getParameter("SQL"),
SysData.UTF8);
// 根据jqGrid对JSON的数据格式要求给jsonObj赋值
JSONObject jsonObj = new JSONObject();
Document docData = BaseDB.executeQuery(sql);
jsonObj = JSONUtil.docRecord2JsonStr(docData,-1, -1);
resp.setCharacterEncoding(SysData.UTF8);
resp.getWriter().print(jsonObj);
/*resp.getWriter().print("12345");*/
} catch (Exception e) {
logger.error(e.getMessage(),e);
throw
new WIZException(e);
}
}
3. 配置类:在web.xml里添加配置语句:
4. 前台页面:
<div id="ceterficateGraficDiv"align="center"></div>
5. JS调用:
这里通过ajax获取数据并以json的形式返回。
<scripttype="text/javascript">
function statisticsShow() {
var departmentSql = document.getElementById("statisticsSQlTxt").value; //sql语句
$.ajax({
url : "/Web/CertificatePStatistics",//返回数据的类
dataType : "json",
type : "POST", //调用servle的post方法
data : {
SQL : encodeURI(departmentSql) //传sql参数
},
async : false,
error : function() {
alert("加载数据错误!");
return;
},
success : function(jsonData) {//将得到的数据封装在’jsonData’变量里
if
(jsonData.rows.length == 0) {
document.getElementById("ceterficateGraficDiv").style.display="none";
document.getElementById("statisticsTabDiv").style.display="none";
return;
}
document.getElementById("ceterficateGraficDiv").style.display="";
document.getElementById("statisticsTabDiv").style.display="";
//alert(jsonData.rows[0].STATUS);
/*开始用jsonData编制XML文件,按照fushionchart的例子编制XML文件
*/
var
data = "<chart palette='2' caption='' xAxisName=''yAxisName='' ";
data+="showValues='0' decimals='0' formatNumberScale='0'unescapeLinks='0'>";
/*XML:categories*/
data += "<categories>";
var
differName="";
for
( var i = 0; i < jsonData.rows.length; i++) {
varrowData = jsonData.rows[i];
varlabelName = rowData.LABEL_NAME;
if(labelName != differName) {
data +=
"<categorylabel='"+labelName+"'/>";
differName = labelName;
}
b79b
}
data += "</categories>";
var
seriesLabel = new Array("已登记","已注册","预警",
"失效");
for
( var i = 0; i < seriesLabel.length; i++) {
data += "<datasetseriesName='"+seriesLabel[i]+"'>";
differName = jsonData.rows[0].LABEL_NAME;
varflag =false;
for(var
j = 0; j < jsonData.rows.length; j++) {
varrowData = jsonData.rows[j];
varlabelName = rowData.LABEL_NAME;
varstatus = rowData.ECSTATUS;
if(labelName == differName) {
if(seriesLabel[i] == status) {
data +=
"<set value='"+rowData.NUM+"' ";
//向下钻取,弹出窗,带参数。fusionCharts绘图要求xml文件里,双引号之间不能出现单引号,因此传参数时需要先htmlEncode ,解参数时需要htmlDecode data+="link='P-detailsWin,width=800,height=200,toolbar=no,scrollbars=yes,resizable=no,location=no,"
//将弹出窗放在页面中间 data+="left="+(screen.width-800)/2+",top="+(window.screen.availHeight-200)/2+",";
data+="resizable=no-Test.html?flag="+getDrillCondition(labelName)+"'/>";
/* data+="<setvalue='"+rowData.NUM+"'/>"; */
flag = true;
}
} else{
if(flag ==false) {
data +=
"<setvalue='0'/>";
}
if(seriesLabel[i] == status) {
data +=
"<set value='"+rowData.NUM+"' ";
data+="link='P-detailsWin,width=800,height=200,toolbar=no,scrollbars=yes,resizable=no,location=no,"
data+="left="+(screen.width-800)/2+",top="+(window.screen.availHeight-200)/2+",";
data+="resizable=no-Test.html?flag="+getDrillCondition(labelName)+"'/>";
/* data+="<setvalue='"+rowData.NUM+"'/>"; */
flag = true;
} else{
flag = false;
}
differName = labelName;
}
}
if(flag ==false) {
data +=
"<setvalue='0'/>";
}
data += "</dataset>";
}
data += "</chart>";
//alert(data);
//document.getElementById("statisticsSQlTxt").value=data;
var
ecCharts = new FusionCharts(
//画多维表时需要用*3D.swf,否则会报’invalid xml data’错误 "fusioncharts31/charts/MSColumn3D.swf",
"ceterficateGraficDiv1","800","400",
"0", "1");
ecCharts.setDataXML(data);
ecCharts.render("ceterficateGraficDiv");
}
});
}
</script>
相关文章推荐
- 通过Mootools 1.2来操纵HTML DOM元素
- WEB标准网页布局中尽量不要使用的HTML标签
- Flash 与 html 的一些实用技巧
- html工作中表格<tbody>标签的使用技巧
- HTML 向 XHTML1.0 兼容性指导
- html链接与文本标签们
- html活用软字符连接符
- 浅谈html中id和name的区别实例代码
- Android的TextView与Html相结合的具体方法
- 『jQuery』.html(),.text()和.val()的概述及使用
- php下过滤HTML代码的函数
- PHP HTML代码串截取代码
- .net后台获取html控件值的2种方法
- 网页的HTML静态化_网站优化之谈
- asp 去掉html中的table正则代码函数
- (X)HTML Strict 下的嵌套规则
- HTML代码中标签的全部属性 中文注释说明
- Flex帮助文档(html格式)制作及ASDoc的使用
- js 静态HTML表格排序功能实现
- jQuery html()等方法介绍