当数据源中没有返回数据时显示YUI饼图

时间:2011-06-27 11:51:14

标签: javascript yui

与YUI中的其他图表(例如折线图)不同,当没有可用数据时,饼图不会显示图表的空白轮廓。相反,根本没有显示 - 只是一个空白区域。

当没有数据可用时,有没有办法让饼图显示?

我正在构建图表以从数据源中提取数据,并以特定间隔进行轮询。

this.chart = new YAHOO.widget.PieChart(id + '_c', this.datasource, {
        categoryField: categoryField,
        dataField: dataField,
        polling: interval * 1000,
        wmode: 'opaque',
        style: {
            background: { color: '#fdfdfd' },
            legend: { display: 'right' }
        }
    });

1 个答案:

答案 0 :(得分:0)

我发现这样做的方法是在实时数据源上覆盖一个名为onBeforeCallback的方法。 http://developer.yahoo.com/yui/docs/YAHOO.util.DataSourceBase.html#method_doBeforeCallback

  

可覆盖的方法使实施者可以访问原始的完整响应和    在数据之前解析的响应(针对给定的模式进行解析)    被添加到缓存中(如果适用),然后发送回回调函数。    这是您访问原始响应和/或填充解析的机会    回复任何自定义数据。

这允许您在将数据发送到图表之前更改数据。如果它是空的,那么我可以添加一个虚拟的“无活动”条目。

this.datasource.doBeforeCallback = function(oRequest, oFullResponse, oParsedResponse, oCallback) {
    if (!oParsedResponse.results || oParsedResponse.results.length < 1) {
       oParsedResponse.results = new Array({ "name": "No Activity", "count": "0" });
    }   
    return oParsedResponse;
 };