Edit2: проблема заключается в вашем заявлении else в функции ниже.
click: function() {
var drilldown = this.drilldown;
if (drilldown) { // drill down
setChart(drilldown.name, drilldown.categories, [drilldown.data], drilldown.color);
} else { // restore
setChart(name, categories1, [data1, data2], 'white');
}
}
Вместо того, чтобы избавиться от name1 = 'Actual'
и иметь только data1
и data2
и добавить к ним name
и color
, тогда вы могли бы сделать это вместо этого
click: function() {
var drilldown = this.drilldown;
if (drilldown) { // drill down
chart.xAxis[0].setCategories(drilldown.categories);
setChart([drilldown.data]);
} else { // restore
chart.xAxis[0].setCategories(categories);
setChart([data1, data2]);
}
}
// add code for removing series
chart.addSeries({
data
});
Надеюсь, вы понимаете, но будет проще, если вы создадите data1/2
как объект highcharts и просто добавите в него детализированную часть. Так что вы можете измениться;
series: [{
name: name1,
data: data1,
color: colors[0]},
{
name: name2,
data: data2,
color: colors[1]}],
to:
series: [data1, data2],
Редактировать: когда вы выполняете операции ниже, вы не должны устанавливать перерисовку на true
, это будет намного быстрее. То же самое касается добавления серии. Вам не нужно вызывать chart.redraw()
, пока вы не удалите и не добавите диаграммы. И удалять вещи легче в обратном порядке. Итак, измените:
while (chart.series.length > 0) {
chart.series[0].remove(true);
}
To
for (var i = chart.series.length; i >= 0; i--){
chart.series[i].remove(false);
}
// add series with redraw == false
chart.redraw();
person
Nils
schedule
16.11.2012