【问题标题】:extjs 4 line chart rendering problemsextjs 4 折线图渲染问题
【发布时间】:2011-12-21 19:56:38
【问题描述】:

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

我正在将图形数据从数据库中提取为 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 阅读器会将它们转换为零,并且这些值在图表底部显示为零 with a系列线,这比在没有系列线的情况下将标记贴在天花板上更糟糕。

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

寻找其他解决方法。

或者是否有人从库本身 (ext-all.js) 中解决了这些问题?

【问题讨论】:

  • 虽然我同意显示看起来很糟糕,但您希望空值如何显示为行中的空白?在这样的图表中,null 是一个有效值似乎很奇怪。
  • @bmoeskau “在这样的图表中,null 是一个有效值似乎很奇怪。”这就是我的感受。是的,希望它显示为间隙。也就是说,图表右上角的六个点(空值)不应该存在。

标签: extjs charts extjs4


【解决方案1】:

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}

【讨论】:

  • 感谢 Eric,convert: 解决了。 useNull: 不起作用,似乎 extjs 折线图显示“null”或“NaN”数据,如上图所示,但“未定义”数据不会显示在折线图上。
  • 我在实现中遇到的一个问题是我必须删除 Ext.data.Model 类型转换:type: 'int' 才能工作。这是因为类型转换在转换函数执行之前将 null 或空白转换为数字,并且在我删除它之前它始终返回为零。
  • 很高兴我能提供帮助。现在我有一个明确的参考,下次遇到这个。
  • 从 Ext JS 4.2.1 开始,useNull 似乎仍然不起作用。你的convert 函数是救世主。谢谢!
猜你喜欢
  • 2011-11-20
  • 2020-03-18
  • 1970-01-01
  • 2013-11-25
  • 2011-01-28
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2011-11-17
相关资源
最近更新 更多