extjs 4折线图渲染问题

时间:2011-12-21 19:56:39

标签: extjs charts extjs4

我在使用extjs渲染下面的折线图时遇到问题。具体来说,最后六个值为空,它们(正确地)没有显示在系列行上,但(错误地)显示了一个标记点​​(见下图右上角)。

line chart with bad rendering

我将数据库中的图形数据作为json:

// data store fields
Ext.define('Graphs', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'the_quota',     type: 'int'},
        {name: 'count_pt_year', type: 'int'},
        {name: 'date_string',   type: 'string'}
    ]
});

// get the graph data
var graphStore = Ext.create('Ext.data.Store', {
    model: 'Graphs',
    proxy: {
        type: 'ajax',
        url: 'sqlRequest.jsp?queryName=events_getGraph',
        timeout: 160000,
        reader: 'json'
    },
    autoLoad:false
});

如果我更改查询以将这些空值返回为空白(''),那么json阅读器会将它们转换为零,并且值的底部显示为零 >一个系列线,更糟糕的是将标记贴在天花板上而没有串联线。

我无法在Ext.chart.Series中找到任何配置选项来隐藏图表上的空值。我也没能在Ext.data.Store中找到一个配置选项来将空白作为空格而不是“0”返回。

寻找其他一些解决方法。

或者有没有人在图书馆内解决这些问题(ext-all.js)?

1 个答案:

答案 0 :(得分:7)

Ext.data.Field下有一个名为useNull的配置选项。如果收到的数据无法解析为数字,则将使用null。到目前为止,我不记得是否只能解决这个问题,而且我有一次使用自定义转换函数的记忆:

convert: function(value){
    if(typeof value !=== 'number') // or other similar conversion
        return undefined;
    return value;
}

如果这不起作用,您可能需要自定义商店/阅读器,以完全排除包含不良null值的记录。

编辑 - 使用useNull看起来像这样:{name: 'someName', type: 'int', useNull: true}