后台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 ...
随机推荐
- Sublime Text
今天在网上找了个Sublime Text 3 Build 3065 的 license key .在最新的Build 3083 下可以使用,记录下. ----- BEGIN LICENSE ----- ...
- SQL Server备份脚本
declare @bakfile varchar(30), @bakfilediff varchar(30),@pathfull varchar(50),@pathdiff varchar(50)se ...
- C++设计模式-Prototype原型模式
作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C+ ...
- IIS发布文件出现:未能加载文件或程序集“xxxx”或它的某一个依赖项。试图加载格式不正确的程序。
解决方案:IIS——应用程序池—选中网站—高级设置——启用32位应用程序 :true.
- Windows 10下通过蓝牙连接iPhone个人热点进行共享上网
出处:qiuyi21.cnblogs.com 1.iPhone开启个人热点 在iPhone中打开蓝牙,然后进入“个人热点”并打开开关,如果提示热点发射方式请选择蓝牙那项,然后停留在“个人热点”界面并且 ...
- hibernate复合主键
需要用到实体类Role的主键和Menu的主键结合起来作为实体类RoleMenu的主键,那么通过Hibernate具体实现如下: RoleMenu实体类:(注意该实体类需要实现Serializable接 ...
- 解析json
String json = "{\"elements\":[{\"distance\":{\"text\":\"1364 ...
- arcgis制作风或水流速流向图
制作风或水流速流向图 风速风向图或流速流向图相信大家都已经见过不少,但不知道有多少人会制作这样炫的专题图,下面这边文章向我们展示了当基本数据U和V矢量被存储时,怎样计算风或水流的速度和方向和对其进行符 ...
- 用CMake构建Qt5的Visual Studio工程
使用Visual Studio构建Qt工程的方法有很多种,可以使用Visual Studio自带的功能手动创建配置工程,也可以创建pro文件,然后通过VS的Qt插件导入进行创建.还有一种方式是通过CM ...
- delphi Style TBitmapLink
New Bitmap Links Editor http://docwiki.appmethod.com/appmethod/1.17/topics/en/What's_New A new edito ...