5

ExtJS4チャートの1つに多くのLineSeriesを入れたいです。

私はこのような店を持っています:

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

また、グリッドビューで選択したエントリの数に応じて、各エントリに3本の線('count_impressions'、'count_clicks'、'count_conversions')を描画します。つまり、グリッドビューの各エントリには2本の線があります。ストアのエントリ。

現時点では、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();
    }
}

これで、グリッドビューのどのエントリをグラフ化するかを変更できます。しかし、それは私が望んでいることではありません。「複数の店舗」を表示するにはどうすればよいですか?

{date:'impressions_1'、'impressions_2'、...}のように、ストアを「線形化」するという1つの解決策を考えました。しかし、その解決策は、ハッキングの複雑さをチャートからストアに移すだけです。

4

1 に答える 1

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();
}
于 2013-01-16T20:04:03.423 に答える