2012-04-04 9 views
5

Voglio avere molte LineSeries in uno dei miei grafici ExtJS4.Caricamento di più serie in un grafico

Ho un negozio che assomiglia a questo:

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

E a seconda di un quante voci seleziono a mio avviso griglia, voglio disegnare le tre linee ('count_impressions', 'count_clicks', 'count_conversions') per ogni voce, ovvero ogni voce nella vista griglia, avrebbe un paio di voci nel negozio.

Al momento ho la seguente funzione che viene chiamato con ogni 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(); 
    } 
} 

Con che posso cambiare quale voce nella griglia di grafico. Ma non è quello che mi piacerebbe avere. Come posso mostrare "più negozi"?

Ho pensato a una soluzione, che devo provare: "Linearizzare" lo store, facendo qualcosa del tipo {data: 'impressions_1', 'impressions_2', ...}. Ma quella soluzione sposterebbe semplicemente la complessità dell'hack dalla creazione di grafici al negozio.

+0

spiacenti Brutos, ma non ho capito il tuo problema. Vuoi visualizzare tre righe per ogni record selezionato, giusto? Quindi, se seleziono quattro record, dodici linee sono mostrate nel grafico? Seconda cosa: il tuo grafico ha l'ascia inferiore come data e l'ascia sinistra come count_impressions: posso avere un esempio di serie di linee che vuoi mostrare? Intendo: facendo clic su un record della griglia, che tipo di dati prevedi di visualizzare sul grafico? – Wilk

risposta

1

La prima metà della domanda ha un senso, ma questo paragrafo lo getta fuori:

Con che posso cambiare, che l'ingresso nella vista griglia per grafico. Ma non è quello che mi piacerebbe avere. Come posso mostrare "più negozi"?

Suppongo che intenda più serie .

E 'dovrebbe essere abbastanza semplice da fare che utilizzando il gestore selectionchange è stato incluso nella domanda:

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