SpringMVC+highstock实现曲线报表 (一)

2014-11-24 10:21:37 · 作者: · 浏览: 0

最近项目要做曲线报表,之前用的是生成图片然后传到前端,感觉不是很好,在网上找到资料说highstock就可以而且还可以做类似股票的那种实时的曲线,研究的一段时间把项目问题解决了做个总结:

首先把highstock.js放到项目资源路径下,因为这个需要JQuery,所以jquery-1.7.2.min.js也需要放,而且在页面引用是要先引用jquery-1.7.2.min.js再引用highstock.js,刚开始做的时候没注意页面加载完后不出图。我做的这个图还需要exporting.js,所以也要放进项目资源文件夹中


页面代码:

<script type="text/java script"	src="${pageContext.request.contextPath}/js/jquery-1.7.2.min.js">
	<script type="text/java script"	src="${pageContext.request.contextPath}/js/highstock.js">
	<script type="text/java script"	src="${pageContext.request.contextPath}/js/exporting.js">
		<script >
		$(document).ready(function(){
		$("#sub").click(function(){
			var names = [];
			$("input:checked[name=sms]").each(function(i, e) {
				var ks = $(this).val();
					if(ks == 1) {
					names.push(1, 2);
					}
					else if (ks == 2){
					names.push(3, 4, 5, 6, 7, 8);
					}
					else if (ks == 3){
					names.push(9, 10, 11, 12, 13);
					}
					else if (ks == 4){
					names.push(14, 15, 16, 17, 18, 19, 20);
					}
					else if (ks == 5){
					names.push(21, 22, 23, 24, 25, 26, 27);
					}
					else if (ks == 6){
					names.push(28, 29, 30, 31, 32, 33, 34, 35);
					}
					else if (ks == 7){
					names.push(36, 37, 38, 39, 40, 41);
					}
			});
			var seriesOptions = [],
    		yAxisOptions = [],
    		seriesCounter = 0,
    		colors = Highcharts.getOptions().colors;
			$.each(names, function(i, name) {
				//后台读取json数据
		        $.getJSON("<%=request.getContextPath()%>/JSONByAction name="+name+"toh="+2, function(data) {
		            //将json数据放入seriesOptions数组
		            seriesOptions[i] = {
		                    name: name,
		                    data: data
		                };
		            seriesCounter++;
		            if (seriesCounter == names.length) {
		                 //开始绘图
		                createChart();
		            }
				});
				function createChart() {
        window.chart = new Highcharts.StockChart({
            chart : {
                renderTo : 'container'
            },
            rangeSelector : {
                selected : 4
            },
            title : {
                text : '湿度显示'
            },
            credits : {
            enabled : false//去掉右下角的标志
        	},
        	 rangeSelector: {
                        // 缩放选择按钮,是一个数组。
                        // 其中type可以是: 'millisecond', 'second', 'minute', 'day', 'week', 'month', 'ytd' (year to date), 'year' 和 'all'。
                        // 其中count是指多少个单位type。
                        // 其中text是配置显示在按钮上的文字
                        buttons: [{
                                type: 'month',
                                count: 1,
                                text: '1月'
                            }, {
                                type: 'month',
                                count: 3,
                                text: '3月'
                            }, {
                                type: 'month',
                                count: 6,
                                text: '6月'
                            }, {
                                type: 'year',
                                count: 1,
                                text: '1年'
                            },{
                                type: 'year',
                                count: 3,
                                text: '3年'
                            }, {
                                type: 'all',
                                text: '所有'
                            }],
                        // 默认选择域:0(缩放按钮中的第一个)、1(缩放按钮中的第二个)……
                        selected: 1,
                        // 是否允许input标签选框
                        inputEnabled: false
                    },
            //右上角日期区间格式化
            rangeSelector:{
                selected:1,
                inputDateFormat:'%Y-%m-%d'
            },
            xAxis: {
                type: 'datetime',
                //x轴时间的格式化
                dateTimeLabelFormats: {
                    second: '%Y-%m-%d
%H:%M:%S', minute: '%Y-%m-%d
%H:%M', hour: '%Y-%m-%d
%H:%M', day: '%Y
%m-%d', week: '%Y
%m-%d', month: '%Y-%m', year: '%Y' } }, yAxis : { title : { text : '湿度' }, labels: { formatter: function() { return (this.value > 0 '+' : '') + this.value + '%'; } } }, //弹出框的格式化显示 tooltip: { xDateFormat: '%Y-%m-%d %A', pointFormat: '{point.name}: {point.y}
', valueDecimals:2 }, series :seriesOptions }); } }); }); });

后台其实就简单了,

@SuppressWarnings("rawtypes")
	@RequestMapping("/queHumHistory")
	@ResponseBody
	publ