2012-04-04 14 views
5

Tôi muốn có nhiều Dòng sản phẩm trong một trong các biểu đồ ExtJS4 của mình.Đang tải nhiều chuỗi thành một biểu đồ

tôi có một cửa hàng trông như thế này:

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

Và tùy thuộc vào một bao nhiêu mục tôi chọn theo quan điểm lưới của tôi, tôi muốn vẽ ba dòng ('count_impressions', 'count_clicks', 'count_conversions') cho mỗi mục nhập, có nghĩa là mỗi mục nhập trong chế độ xem lưới, sẽ có một vài mục nhập trong cửa hàng.

Tại thời điểm tôi có chức năng sau đó được gọi với mỗi 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(); 
    } 
} 

Với rằng tôi có thể thay đổi mục trong xem lưới để đồ thị. Nhưng đó không phải những gì tôi muốn có. Làm thế nào tôi có thể hiển thị "nhiều cửa hàng"?

Tôi đã nghĩ về một giải pháp, mà tôi phải thử: "Linearizing" cửa hàng, bằng cách thực hiện một cái gì đó như {date: 'impressions_1', 'impressions_2', ...}. Nhưng giải pháp đó sẽ thay đổi sự phức tạp của hack từ việc lập biểu đồ đến cửa hàng.

+0

Brutos Xin lỗi nhưng tôi không hiểu vấn đề của bạn. Bạn muốn hiển thị ba dòng cho mỗi bản ghi đã chọn, phải không? Vì vậy, nếu tôi chọn bốn bản ghi, mười hai dòng được hiển thị trong biểu đồ? Điều thứ hai: biểu đồ của bạn có rìu dưới cùng là ngày và rìu trái như count_impressions: tôi có thể có một ví dụ về một chuỗi dòng bạn muốn hiển thị không? Ý tôi là: bằng cách nhấp vào một bản ghi của lưới, bạn mong đợi loại dữ liệu nào trên biểu đồ của mình? – Wilk

Trả lời

1

Nửa đầu của câu hỏi có ý nghĩa nhưng đoạn này ném nó đi:

Với rằng tôi có thể thay đổi mục trong xem lưới để đồ thị. Nhưng đó không phải là những gì tôi muốn có. Làm thế nào tôi có thể hiển thị "nhiều cửa hàng"?

Tôi giả sử bạn có nghĩa là nhiều series.

Nó nên được khá đơn giản để làm điều đó bằng cách sử dụng bộ xử lý selectionchange bạn đã đưa vào câu hỏi:

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