highcharts+jquery+grails前台数据显示的问题
小弟我初学highcharts 现在要做个以时间为查询条件去数据库查询数据 得到的结果显示在highcharts上 ,x轴时间的刻度要根据查询结果来设置 怎么做,还有返回的数据如何绑定到highcharts上 求帮忙 明天就要了
这是前端代码:
var chart;
function DrawChart(){
chart = new Highcharts.Chart({
reflow:true,
chart: {
renderTo: 'container',
type: 'line',
marginRight: 130,
marginBottom: 25
},
exporting: {
enabled:false
},
title: {
text: 'Kinds Of Indexs Of Pisciculture ',
x: -20 //center
},
subtitle: {
text: 'Source: WorldClimate.com',
x: -20
},
xAxis: {
title: {
text: '时段'
},
categories: ['00:00', '02:00', '04:00', '06:00', '08:00', '10:00',
'12:00', '14:00', '16:00', '18:00', '20:00', '22:00']
},
yAxis: {
title: {
text: 'Values'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
this.x +': '+ this.y +'°C';
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
},
series: [{
name: '温度 - ℃',
data: []
}, {
name: '溶氧(DO) - mg/L',
data: []
}, {
name: 'pH值 ',
data: []
}, {
name: '氧化还原电位(ORP) - mV',
data: []
}]
});
}
下面这个方法是onclick时调用
function getChartdata(deviceId){
$.ajax({
async : true,
type: "POST",
url: "home/searchaDataByDate",
data: {dateFrom: $("#dateFrom").attr("value"),dateTo:$("#dateTo").attr("value"),deviceId:deviceId},
success: function(chartData)
{
debugger;
DrawChart();
chart.series[0].setData(chartData.temp);
chart.series[1].setData(chartData.rdo);
chart.series[2].setData(chartData.ph);
chart.series[3].setData(chartData.orp);
}
});//ajax end
}
后台的查询时如下的
def searchaDataByDate(String deviceId){
print "searchaDataByDate"
// def dateTime=new Date().format("yyyyMMdd")
long df =0// Long.parseLong(dateFrom)
long dt =11111111111111111// Long.parseLong(dateTo)
long did = Long.parseLong(deviceId)
print did
def samples = Sample.createCriteria().list(params) {
eq('deviceId', did)
ge('timestamp', df)
lt('timestamp', dt)
}
render(contentType: "text/json") {
total = samples.totalCount
rows = samples.collect { sample ->
def data = sample.data
data.keySet().each { key ->
data[key] = g.formatNumber(number: data[key], maxFractionDigits: 2)
}//todo performance
return [id: sample.id, collectTime: new Date(sample.timestamp).format('yyyy-MM-dd HH
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
万分感谢你的回答 请问你的数据在后台怎么封装的
json格式的 JSONArray.fromObject(mapper.getList(map)); List里面是对象
我的,你参考参考吧: