2011-06-27 21 views
0

與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' } 
     } 
    }); 

回答

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; 
}; 
相關問題