2012-04-04 20 views
5

我想有很多供LineSeries我ExtJS4圖表之一。加載多個串聯成圖表

我有一個店,看起來像這樣:

Ext.define('DayStatistics', { 
    extend:'Ext.data.ArrayStore', 
    fields:[ 'date', 'count_impressions', 'count_clicks', 'count_conversions' ] 
}); 

而且取決於有多少項選擇在我的網格視圖,我想畫三條線(「count_impressions」,「count_clicks」, 「count_conversions」)爲每個條目,這意味着在網格視圖中的每個條目,將不得不在店裏幾個條目。

此刻,我有以下函數被調用每selectionchange:

loadChart: function (Model, records) { 
    var removeChart = function (chart) { 
     var series = chart.series.items, surface = chart.surface, 
      length = series.length, len = surface.groups.keys.length, 
      array = []; 
     for (var i = 0; i < length; i++) 
      array = Ext.Array.merge(array, series[i].group.keys); 
     chart.series.clear(); 
     for (var j = 0; j < array.length; j++) 
      surface.items.getByKey(array[j]).destroy(); 
     for (var t = 0; t < len; t++) 
      surface.groups.items[t].destroy(); 
    }; 

    var chart = Ext.getCmp('advertiserstatisticlist.advertiserChart'); 
    removeChart(chart); 

    for (var record in records) { 
     chart.series.add({ 
      type:'line', 
      xField:'date', 
      yField:'count_impressions' 
     }); 
     chart.store.loadData(records[record].data.days, true); 
     chart.refresh(); 
    } 
} 

有了,我可以改變它在網格視圖圖形條目。但那不是我想要的。我如何顯示「多個商店」?

我想到了一個解決方案,我必須嘗試:「線性化」的店,做這樣的事情{日期和時間:「impressions_1」,「impressions_2」,...}。但是這種解決方案只會將黑客的複雜性從圖表轉移到商店。

+0

對不起Brutos,但我不明白你的問題。您想要爲每個選定的記錄顯示三行,對嗎?那麼,如果我選擇四條記錄,圖表中會顯示十二條線?第二件事情:你的圖表有底部斧頭日期和左斧頭爲count_impressions:我可以有你想要顯示線系列的例子嗎?我的意思是:通過點擊網格的記錄,你希望查看圖表上什麼樣的數據? – Wilk 2012-09-07 22:40:54

回答

1

問題的前半部分是有道理的,但本款拋出其關閉:

有了,我可以更改網格視圖圖形哪個條目。但 那不是我想什麼都有。我如何顯示「多個商店」?

我假設你指的是多個系列

這應該是相當簡單的事情,使用您的問題包括selectionchange處理程序:

loadChart: function (selModel, records) { 

    var chart = Ext.getCmp('advertiserstatisticlist.advertiserChart'); 

    chart.series.clear(); 

    for (var record in records) { 
     chart.series.add({ 
      type:'line', 
      xField:'date', 
      yField: record.get(/*[whatever you named the "series name" field in the grid store]*/) 
     }); 
    } 
    chart.redraw(); 
}