2012-04-04 10 views
5

Ich möchte viele LineSeries in einem meiner ExtJS4-Charts haben.Laden mehrerer Serien in ein Diagramm

Ich habe ein Geschäft, das wie folgt aussieht:

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

Und je nachdem, ein, wie viele Einträge ich meine Kurzansicht wählen in, ich will die drei Linien zeichnen (‚count_impressions‘, ‚count_clicks‘, "count_conversions") für jeden Eintrag, dh für jeden Eintrag in der Rasteransicht, würden einige Einträge im Store enthalten sein.

Im Moment habe ich die folgende Funktion haben, die mit jedem Selection aufgerufen wird:

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

Damit kann ich die den Eintritt in die Rasteransicht Diagramm ändern. Aber das möchte ich nicht haben. Wie kann ich "mehrere Geschäfte" anzeigen?

Ich dachte über eine Lösung nach, die ich versuchen muss: "Linearisieren" des Geschäfts, indem Sie so etwas tun {date: 'impressions_1', 'impressions_2', ...}. Aber diese Lösung würde nur die Komplexität des Hacks vom Charting in den Laden verlagern.

+0

Leider Brutos aber ich habe Ihr Problem nicht verstehen. Sie möchten für jeden ausgewählten Datensatz drei Zeilen anzeigen, oder? Wenn ich also vier Datensätze auswähle, werden zwölf Zeilen im Diagramm angezeigt? Zweitens: Ihr Diagramm hat die untere Axt als Datum und die linke Axt als count_impressions: Kann ich ein Beispiel für eine Zeilenserie haben, die Sie anzeigen möchten? Ich meine: Wenn Sie auf einen Datensatz des Gitters klicken, welche Art von Daten erwarten Sie auf Ihrem Diagramm? – Wilk

Antwort

1

Die erste Hälfte der Frage macht Sinn, aber dieser Absatz führt es aus:

Damit ich, welchen Eintrag in der Rasteransicht Diagramm ändern kann. Aber das ist nicht was ich gerne hätte. Wie kann ich "mehrere Geschäfte" anzeigen?

Ich nehme an, Sie bedeuten mehrere Serie.

Es ist sollte ziemlich einfach sein, das zu tun, mit dem selectionchange Handler Sie in der Frage enthalten:

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(); 
} 
Verwandte Themen