2012-04-04 63 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(); 
}