后台dom拼接xml,动态显示统计图
这个东西让我好生头疼,贴代码吧 // 两秒后模拟点击
setTimeout(function() {
// IE
if(document.all) {
document.getElementById("userQuery").click();
}// 其它浏览器
else {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById("userQuery").dispatchEvent(e);
}
}, 1000);
$("#userQuery").click(function(){
var $this = $(this);
var companyCode=GetRequest()['companyCode'];
$("#compAny").val(companyCode);
//将queryStr传到后台,进行获取数据
var queryStr = $this.parents('form').serialize();
$.ajax({
url: "../../userliebiao/userGraph.do",
data: queryStr,
type: "post",
cache:false,
dataType: "json",
success: function (data) {
var myChart;
myChart = new FusionCharts("../../fusionCharts/Line.swf","myChartId", "1200", "400", "0" );
myChart.setDataXML(data.xml); //调用后台的xml数据
myChart.render("userPic"); //将数据送给div 进行显示},//如果后台有错
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status); //一切正常 200
alert(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
//此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。
alert(XMLHttpRequest.readyState);
console.log(textStatus);
alert("出错了"+textStatus);}}); }); 后台方法: try {
String subcaption = null;
User user=new User();
String type=this.getParam("cycle");
if (type.equals("1")) {
type="1,2"; //1:按天
user.setDmType(type);
}else if(type.equals("2")){
type="4,2"; //1:按月
user.setDmType(type);
}else if(type.equals("3")){
type="8,3"; //1:按年"minZu"
user.setDmType(type);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String allTime=this.getParam("fcreatetime2");
String compAny=this.getParam("compAny");
Map<String, Object> map = new HashMap<String, Object>();
if (allTime!=null || allTime!="") {
String[] a=allTime.split(" 至 "); //将时间分割为开始时间~结束时间
String betime=a[0];
String entime=a[1];
subcaption=betime+" 至 "+entime;
Date time1 = sdf.parse(betime);
Date time2 = sdf.parse(entime);
if (type!=""||compAny!="") {
user.setDmType(type);
user.setCompanyCode(compAny);
}
map.put("dmType",user.getDmType()); //将数据存到map,作为sql方法的参数
map.put("companycode",user.getCompanyCode());
map.put("beginTime",time1);
map.put("overTime", time2);
}
List<Map> aa = los.userGraph(map);//执行sql语句
Document document = DocumentHelper.createDocument();//创建dom节点
// if(!"3".equals(map.get("querytype").toString())){//如果不是按地区查询
// String yAxisMaxValue="50000"; //y轴最大值
String xAxisName="注册日期";
String yAxisName="注册人数";
String numberSuffix="人"; //数字的后缀
String xlable; String title = "登录人次统计";
Element root = XmlDom4jUtils.addElementAndAttribute(document, "chart",
"caption","注册人数统计 ","xAxisName","注册日期 ","yAxisName","注册人数",
"yAxisMinValue","200","showValues","","alternateHGridColor",
"FCB541","alternateHGridAlpha","20","divLineColor","FCB541","divLineAlpha","50",
"canvasBorderColor","666666","baseFontColor","666666","lineColor","FCB541",
"baseFont","Arial","baseFontSize","15","rotateYAxisName","0",
"chartRightMargin","50","showBorder","0",
"canvasBorderThickness ","1","showNames","",
"numDivLines ","4",
"numberSuffix",numberSuffix,
// "xAxisName",xAxisName,
"subcaption",subcaption+" ",
"showAlternateHGridColor","1",
"canvasBorderColor","FFCCCC",
"bgColor","FFFFFF,FFFFFF",
"anchorRadius","2",//折线节点半径
"bgColor","FFFFFF"
);
String ss;
for (Map map2 : aa) {
ss=(String) map2.get("CREATEDDATE");
boolean a = ss.contains("月");
if (a!=true) {
if (type.equals("1,2")) {
ss+="日";
}
if (type.equals("4,2")) {
ss+="月";
}
if (type.equals("8,3")) {
ss+="年";
}
}
map2.put("CREATEDDATE", ss);
XmlDom4jUtils.addChildrenAndAttribute(root,"set","label",""+map2.get("CREATEDDATE")+"","value",""+map2.get("VISITORID")+"");
} Element styles = XmlDom4jUtils.addChildren(root, "styles");
Element definition = XmlDom4jUtils.addChildren(styles,"definition");
XmlDom4jUtils.addChildrenAndAttribute(definition,"style","name","Anim1","type","animation","param","_xscale","start","0","duration","1");
XmlDom4jUtils.addChildrenAndAttribute(definition,"style","name","Anim2","type","animation","param","_alpha","start","0","duration","0.6");
Element application = XmlDom4jUtils.addChildren(styles,"application");
XmlDom4jUtils.addChildrenAndAttribute(application,"apply","toObject","DIVLINES","styles","Anim1");
XmlDom4jUtils.addChildrenAndAttribute(application,"apply","toObject","HGRID","styles","Anim2");
XmlDom4jUtils.addChildrenAndAttribute(application,"apply","toObject","DATALABELS","styles","DataShadow,Anim2"); Map<String, Object> mapp = new HashMap<String, Object>();
mapp.put("xml", document.asXML());
String json = JsonUtils.mapToJson(mapp);
outStringData(json);
} catch (ParseException e) {
e.printStackTrace();
} 核心是sql语句: select count(i.createddate) as visitorId,substr(u.createddate,${dmType}) as createddate
from ** u,// i
where u.userinfoids = i.ids
<if test="beginTime !=null and beginTime !=''">
<![CDATA[
and substr(u.createddate,0,10) >= #{beginTime}
]]>
</if>
<if test="overTime !=null and overTime !=''">
<![CDATA[
and substr(u.createddate,0,10) <= #{overTime}
]]>
</if>
<if test="companycode !=null and companycode !=''">
and u.COMPANYCODE = #{companycode}
</if>
<![CDATA[
group by substr(u.createddate, ${dmType})
order by substr(u.createddate, ${dmType}) asc
]]> dao代码: //图形统计
public List<Map> **(Map<String, Object> map){
// super.sqlSessionTemplate.selectMap("路径", map);
return super.sqlSessionTemplate.selectList("路径", map); }
后台dom拼接xml,动态显示统计图的更多相关文章
- Qt 学习之路 2(60):使用 DOM 处理 XML
Qt 学习之路 2(60):使用 DOM 处理 XML 豆子 2013年8月3日 Qt 学习之路 2 9条评论 DOM 是由 W3C 提出的一种处理 XML 文档的标准接口.Qt 实现了 DO ...
- Android之DOM解析XML
一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息 ...
- php中通过DOM操作XML
DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- php : DOM 操作 XML
DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...
- 简单谈谈dom解析xml和html
前言 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.html,xml都是基于这个模型构造的.这也是一个W3C推出的标准.j ...
- JAva使用DOM读取XML数据(解析)
原来一切都是有套路的 使用DOM解析XML文档步骤 1.创建解析器工厂对象 DocumentBuildFactory对象 2.由解析器工厂对象创建解析器对象,即DocumentBuilder对象 3. ...
- Java从零开始学四十二(DOM解析XML)
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
随机推荐
- VS 远程调试之 “The visual studio remote debugger does not support this edition of windows”
The error message "The visual studio remote debugger does not support this edition of windows&q ...
- 浅谈lua
Lua脚本语言,关于它的介绍及优点特性,跨平台啊等等,在百度上可以搜索到很多,所以我就不再这里细说了.我主要想说的是lua在嵌入到应用程序中之后.. lua是按照标准的c/c++写的.当然它同样是可以 ...
- Raspberry pi(-) Mac下安装系统
购买树莓派一般的操作说明书都是windows下的,因为本人只有MBP,外加虚拟机Parallels Desktop无法识别SD卡,所以就直接参考Mac教程了. 1.系统镜像官网下载 推荐用Raspbi ...
- (转)C语言_测试程序运行内存状态GlobalMemoryStatus使用案例
在做毕业设计的时候,需要验证算法的空间复杂度,C语言网上都说是用GlobalMemoryStatus这个函数,但是网上却没有这个函数的使用实例,也有人说是用内存分析器的东西,但是这个显然是不靠谱的. ...
- vs中使用openGL
一.准备工作 创建Empty Project,为了能够使用OpenGL的库函数,需要把相关的库连接到项目中: 1.首先添加库的路径 如上,可以把需要添加的include.lib放到一起比较方便管理 这 ...
- hadoop 2.7.2 和 spark1.6 多节点安装
一共三个节点,在安装完hadoop之后直接安装spark.下载的spark版本是不带hadoop的,注意节点配置 Hadoop multi-nodes Installation Environment ...
- java SSH框架详解(面试和学习都是最好的收藏资料)
Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...
- OpenLayers Map理解
1,视口坐标的原点在左上角,水平向右为x轴正向,垂直向下为y 轴正向:2,地图坐标原点为初始图层的中心点,水平向右为x轴正向,垂直向上为y轴正向:3,视口中心点永远与地图中心点重合,不一定与瓦片中心点 ...
- 通过Fiddler修改包
1.修改Request 命令行键入: bpu URL 优缺点:对单个URL打断点.不影响其他接口. 用途:可以修改客户端对服务器发送的请求,通过修改成不同的参数,验证服务器响应是否正确.通常用于模拟客 ...
- java 在linux环境下写入 syslog 问题研究
1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...