Extjs4图表没有绘制正确的数据

时间:2011-06-19 04:39:28

标签: javascript extjs extjs4 extjs-mvc

我在Extjs4中为我的一个项目创建了一个简单的折线图,图表没有绘制正确的数据。

enter image description here

图表使用与网格相同的商店,但不显示相同的数据。有没有办法追踪问题的根源,如果不完全修复它?

以下是我用来生成图表的代码。

{
    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不是函数”)

2 个答案:

答案 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传递之前先将它强制为浮点数。