extjs3.3 + fushioncharts + velocity 实现折线图

啥也不说,直接上代码

先放入一个panel

 //折线图pannel
       var linePanel= new Ext.Panel({
		   autoHeight:true,
                   layout:'fit',
                   id:'center',
		   html:'<div id="chartdiv" align="center">1</div>'  //此处div是用来嵌套flash插件
	   });

//定义方法通过ajax请求折线图数据,<span style="font-family: Arial, Helvetica, sans-serif;">startDate,endDate是查询条件,如不需要可无视</span>
       function getLineDate(startDate,endDate){
	        Ext.Ajax.request({
                url:'/statistics/member/memberListForStatistics?startTime=' + startDate + "&endTime=" + endDate,
                success: function(response, opts){
                	var jsret =  Ext.decode(response.responseText);
                    var chart = new FusionCharts(escape("/static/js/fusioncharts/Charts/FCF_MSLine.swf"), "chartdiv", "1100", "550");
                    chart.setDataXML(jsret.data);  //通过ajax请求获取折线图数据
                    chart.render("chartdiv");
                },
                failure: alert("falure");
            });
        }


	public  Map<String, Object> memberListForStatistics(HttpServletRequest request) throws ParseException{
		Map<String, Object> map = new HashMap<String, Object>();
		//paramsMap用于封装分页参数和查询参数
		Map<String,Object> paramsMap = new HashMap<String,Object>();
		//设置分页参数
	        String startTime = request.getParameter("startTime");
		String endTime = request.getParameter("endTime");
		try {
			if(StringUtils.isNotEmpty(startTime)){
				paramsMap.put("startTime", DateFomatUtil.String2Date(startTime, "yyyy-MM-dd"));
			}
			if(StringUtils.isNotEmpty(endTime)){
				paramsMap.put("endTime", DateFomatUtil.String2Date(endTime, "yyyy-MM-dd"));
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		List<MemberStatisticsCommand>  list= memberStatisticsService.getStatisticsList(paramsMap);
		map.put("data", buildXmlData(startTime, endTime, list));
		
		return map;
	}



设构建折线图返回的数据,返回的是一个XML数据
public String buildXmlData(String startDate, String endDate, List<MemberStatisticsCommand> list){
		if(CollectionUtils.isNotEmpty(list)){
			startDate = list.get(list.size() - 1).getCreateTimeView();
			endDate = list.get(0).getCreateTimeView();
		}
		String graph = "<graph caption=\"用户统计折线图\" subcaption=\"(" + startDate + " to "  + endDate +")\" hovercapbg=\"FFECAA\" hovercapborder=\"F47E00\" " + 
				"formatNumberScale=\"0\" decimalPrecision=\"0\" showvalues=\"0\" numdivlines=\"10\" " + 
				"numVdivlines=\"0\" yaxisminvalue=\"0\" yaxismaxvalue=\""+getYaxismaxvalue(list)+"\" rotateNames=\"1\">";
		StringBuilder sb = new StringBuilder("");
		StringBuilder categories = new StringBuilder("<categories>");
		StringBuilder newMember = new StringBuilder("<dataset seriesName=\"每天新用户\" color=\"1D8BD1\" anchorBorderColor=\"1D8BD1\" anchorBgColor=\"1D8BD1\">");
		StringBuilder wxMember = new StringBuilder("<dataset seriesName=\"微信用户\" color=\"2AD62A\" anchorBorderColor=\"2AD62A\" anchorBgColor=\"2AD62A\">");
		StringBuilder qqMember = new StringBuilder("<dataset seriesName=\"qq用户\" color=\"009900\" anchorBorderColor=\"009900\" anchorBgColor=\"009900\">");
		StringBuilder wbMember = new StringBuilder("<dataset seriesName=\"微博用户\" color=\"9933FF\" anchorBorderColor=\"DBDC25\" anchorBgColor=\"DBDC25\">");
		StringBuilder mobileMember = new StringBuilder("<dataset seriesName=\"手机用户\" color=\"008B00\" anchorBorderColor=\"DBDC25\" anchorBgColor=\"DBDC25\">");
		StringBuilder hspMember = new StringBuilder("<dataset seriesName=\"惠锁屏用户\" color=\"EE1289\" anchorBorderColor=\"DBDC25\" anchorBgColor=\"DBDC25\">");
		StringBuilder allMember = new StringBuilder("<dataset seriesName=\"用户量\" color=\"17f0ff\" anchorBorderColor=\"DBDC25\" anchorBgColor=\"DBDC25\">");
		if(CollectionUtils.isNotEmpty(list)){
			MemberStatisticsCommand command = null;
			for (int i = list.size() -1; i >= 0; i--) {
				command = list.get(i);
				categories.append("<category name=\"" + DateFomatUtil.formatToString(command.getCreateTime(), "yyyy-MM-dd") + "\"/>");
				newMember.append("<set value=\"" + command.getNewIncrementNum()+ "\" />");
				wxMember.append("<set value=\"" + command.getIncrementNumWeixin() + "\" />");
				qqMember.append("<set value=\"" + command.getIncrementNumQq() + "\" />");
				wbMember.append("<set value=\"" + command.getIncrementNumWeibo() + "\" />");
				mobileMember.append("<set value=\"" + command.getIncrementNumSms() + "\" />");
				hspMember.append("<set value=\"" + command.getIncrementNumHsp() + "\" />");
				allMember.append("<set value=\"" + command.getTotalUserNum() + "\" />");
			}
		}
		categories.append("</categories>");
		newMember.append("</dataset>");
		wxMember.append("</dataset>");
		qqMember.append("</dataset>");
		wbMember.append("</dataset>");
		mobileMember.append("</dataset>");
		hspMember.append("</dataset>");
		allMember.append("</dataset>");
		sb.append(graph).append(categories).append(newMember).append(wxMember).append(qqMember).append(wbMember).
		   append(mobileMember).append(hspMember).append("</graph>");
		return sb.toString();
	}



	
	 // 获取折线图Y轴最大值
	private int getYaxismaxvalue(List<MemberStatisticsCommand> list){
		int maxNum = 0;
		for (MemberStatisticsCommand command : list) {
			maxNum = ( maxNum >= command.getNewIncrementNum() ? maxNum : command.getNewIncrementNum() );
		}
		return maxNum;
	}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值