Javascript Node.js、express、jade、highcharts和2D数组
免责声明,我对javascript/node.js/express/jade/highcharts等非常陌生 解决我的问题Javascript Node.js、express、jade、highcharts和2D数组,javascript,node.js,express,highcharts,pug,Javascript,Node.js,Express,Highcharts,Pug,免责声明,我对javascript/node.js/express/jade/highcharts等非常陌生 解决我的问题 我有一个模板,它接收我在路由器代码中预处理的几个参数。 这些参数被分为一个对象,表示元数据和系列数据的高位图表 当我试图将2D数组传递给代表我的数据系列的jade模板时,我遇到了一个问题,但在chrome开发工具中,它看起来像一个普通数组。 我的Highcharts代码基于: 这是我的代码: delivered.js var callback = function proc
我有一个模板,它接收我在路由器代码中预处理的几个参数。 这些参数被分为一个对象,表示元数据和系列数据的高位图表 当我试图将2D数组传递给代表我的数据系列的jade模板时,我遇到了一个问题,但在chrome开发工具中,它看起来像一个普通数组。 我的Highcharts代码基于: 这是我的代码:
delivered.js
var callback = function process_results(result){
var res = new Object()
res.title = "Delivery Count"
res.yAxisTitle = 'Delivered'
res.seriesName = "Delivered per month"
res.seriesData = []
for (var i = 0; i < result.rows.length; i++) {
//process the query results
row = result.rows[i]
date = "\'" + row.month_delivered + '/' + row.year_delivered + "\'"
count = row.count
res.seriesData.push([date,count])
};
console.log(res)
response.render('column-graph', res)
}
#{seriesData}参数是res.seriesData,它应该是一个2D数组。
在delivered.js中,我有一个console.log(res)显示:
{ title: 'Delivery Count',
yAxisTitle: 'Delivered',
seriesName: 'Delivered per month',
seriesData:
[ [ '\'7/2014\'', '3000' ],
[ '\'6/2014\'', '5163' ],
[ '\'5/2014\'', '23882' ],
[ '\'4/2014\'', '26471' ],
[ '\'3/2014\'', '82172' ],
[ '\'2/2014\'', '31283' ],
[ '\'1/2014\'', '637400' ],
[ '\'12/2013\'', '86420' ],
[ '\'11/2013\'', '119150' ],
[ '\'10/2013\'', '49093' ] ] }
但是当我在浏览器中查看它时,我得到了这样的信息: series: [{
name: 'Delivered per month',
data: ['7/2014',3000,'6/2014',5163,'5/2014',23882,'4/2014',26471,'3/2014',82172,'2/2014',31283,'1/2014',637400,'12/2013',86420,'11/2013',119150,'10/2013',49093],
dataGrouping: {
enabled: true
},
dataLabels: {
enabled: true,
rotation: -90,
color: '#FFFFFF',
align: 'right',
x: 4,
y: 10,
style: {
fontSize: '13px',
fontFamily: 'Verdana, sans-serif',
textShadow: '0 0 3px black'
}
}
}]
});
抱歉问了这么长的问题,
先谢谢你 尝试更改:
data: [#{seriesData}],
致:
最后,我做了些别的事情。 而不是在delivered.js中预处理数组,
我将数组原样传递给jade模板,并执行了以下操作:
html
head
link(rel='stylesheet', href='/stylesheets/style.css')
script(type='text/javascript', src="http://code.jquery.com/jquery-1.9.1.min.js")
script(type='text/javascript', src="http://code.highcharts.com/highcharts.js")
script(type='text/javascript', src="http://code.highcharts.com/modules/exporting.js")
title Delivered Leads
body
div#container(style="min-width: 500px; height: 500px; margin: 0 auto")
script.
var arrToMultiArr = function(arr){
var result = new Array()
for (var i=0; i < arr.length; i+=2){
var date = arr[i]
var count = arr[i + 1]
result.push([date, count])
}
return result
};
var mySeries = arrToMultiArr([#{seriesData}])
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: "#{title}"
},
subtitle: {
text: 'Source: Internal DB'
},
xAxis: {
type: 'category',
labels: {
rotation: -45,
style: {
fontSize: '13px',
fontFamily: 'Verdana, sans-serif'
}
}
},
yAxis: {
min: 0,
title: {
text: "#{yAxisTitle}"
}
},
legend: {
enabled: false
},
series: [{
name: '#{seriesName}',
data: mySeries,
dataGrouping: {
enabled: true
},
dataLabels: {
enabled: true,
rotation: -90,
color: '#FFFFFF',
align: 'right',
x: 4,
y: 10,
style: {
fontSize: '11px',
fontFamily: 'Verdana, sans-serif',
textShadow: '0 0 3px black'
}
}
}]
});
});
html
头
链接(rel='stylesheet',href='/stylesheets/style.css')
脚本(type='text/javascript',src=”http://code.jquery.com/jquery-1.9.1.min.js")
脚本(type='text/javascript',src=”http://code.highcharts.com/highcharts.js")
脚本(type='text/javascript',src=”http://code.highcharts.com/modules/exporting.js")
标题交付线索
身体
div#container(style=“最小宽度:500px;高度:500px;边距:0自动”)
剧本
var arrToMultiArr=函数(arr){
var result=新数组()
对于(变量i=0;i
Hi,这似乎没有什么帮助:这是它看起来的系列:[{名称:'每月交付',数据:'7/2014',3000,'6/2014',5163,'5/2014',23882,'4/2014',26471,'3/2014',82172,'2/2014',31283,'1/2014',637400,'12/2013',86420,'11/2013',119150,'10/2013',49093,…它不会被渲染。你的每一项都应该被渲染['7/2014',3000],其中3000是数字,而不是字符串。数据应该是数字数组(仅y值)或数组数组数组(对:类别,值)。当您使用xAxis而不是类别的数字/日期时间类型时,数据分组仅在highstock中可用。
data: #{seriesData},
html
head
link(rel='stylesheet', href='/stylesheets/style.css')
script(type='text/javascript', src="http://code.jquery.com/jquery-1.9.1.min.js")
script(type='text/javascript', src="http://code.highcharts.com/highcharts.js")
script(type='text/javascript', src="http://code.highcharts.com/modules/exporting.js")
title Delivered Leads
body
div#container(style="min-width: 500px; height: 500px; margin: 0 auto")
script.
var arrToMultiArr = function(arr){
var result = new Array()
for (var i=0; i < arr.length; i+=2){
var date = arr[i]
var count = arr[i + 1]
result.push([date, count])
}
return result
};
var mySeries = arrToMultiArr([#{seriesData}])
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: "#{title}"
},
subtitle: {
text: 'Source: Internal DB'
},
xAxis: {
type: 'category',
labels: {
rotation: -45,
style: {
fontSize: '13px',
fontFamily: 'Verdana, sans-serif'
}
}
},
yAxis: {
min: 0,
title: {
text: "#{yAxisTitle}"
}
},
legend: {
enabled: false
},
series: [{
name: '#{seriesName}',
data: mySeries,
dataGrouping: {
enabled: true
},
dataLabels: {
enabled: true,
rotation: -90,
color: '#FFFFFF',
align: 'right',
x: 4,
y: 10,
style: {
fontSize: '11px',
fontFamily: 'Verdana, sans-serif',
textShadow: '0 0 3px black'
}
}
}]
});
});