我在Extjs4中为我的一个项目创建了一个简单的折线图,图表没有绘制正确的数据。
图表使用与网格相同的商店,但不显示相同的数据。有没有办法追踪问题的根源,如果不完全修复它?
以下是我用来生成图表的代码。
{
xtype: 'chart',
animate: true,
shadow: true,
store: 'Dataalls',
legend: {
position: 'top'
},
axes: [{
type: 'Numeric',
position: 'left',
title: 'Wind Speed',
fields: ['windspeed'],
grid: true
}, {
type: 'Category',
position: 'bottom',
title: 'Time',
fields: ['time']
}],
series: [{
type: 'line',
axis: 'left',
xField: ['time'],
yField: ['windspeed']
}]
}
(我尝试使用类型:'时间'作为x轴,但得到错误“date.getFullYear不是函数”)
答案 0 :(得分:1)
对于date.getFullYear(),我怀疑你的日期字符串无法解析为Date对象。你可以发布你的其他支持代码,理想情况下是Store和Grid的完整代码吗?如果您想使用时间轴,则需要通过以下方式将日期字符串转换为日期对象:
Ext.define('Your.Model', {
extend: 'Ext.data.Model',
fields: [
{name: 'dateString', type: 'string'},
{name: 'date',
convert: function(value, record) {
year = value.substring(0,4);
month = value.substring(5,7).replace(/^[0]+/g,"");
day = value.substring(8,10).replace(/^[0]+/g,"");
hour = value.substring(11,13).replace(/^[0]+/g,"");
// etc for min, sec, millis
return new Date(year, (month - 1), day, hour, 0, 0);
}
}
]
});
为了调试图表没有正确显示,我将你的图表对象分配给var和Firebug断点,在该变量赋值之后能够检查你的图表js对象并查看里面的数据。
答案 1 :(得分:0)
使用Time时遇到了类似的问题。只需通过定义我的模型字段类型来修复它:
字段:[{name:'date',type:'Date'},{name:'close',type:'float'}]
至于为什么你的图表是这样的,我之前也得到了,我意识到json将它作为一个字符串传递,所以我需要被定义为一个浮点数。我在php端修复了这个问题,在将它作为json传递之前先将它强制为浮点数。