2015-05-04 3 views
0

Я хочу использовать возможность детализации диаграмм в rCharts. В демонстрационном разделе есть пример, но кнопка возврата на верхний уровень не отображается. Есть ли обходной путь для этого?Drillup в highcharts от rCharts

Тот же вопрос был задан на GitHub: https://github.com/ramnathv/rCharts/issues/602

Рабочий пример (по крайней мере, развернутом) со страницы rCharts GitHub:

## Example 9 (not working properly) 
drill_function <- "#! function() { 
    var drilldown = this.drilldown; 
    function setChart(name, categories, data, color) { 
     chart.xAxis[0].setCategories(categories, false); 
     chart.series[0].remove(false); 
     chart.addSeries({ 
      name: name, 
      data: data, 
      color: color || 'black' 
     }, false); 
     chart.redraw(); 
    }; 
    if (drilldown) { // drill down 
     setChart(drilldown.name, drilldown.categories, drilldown.data, drilldown.color); 
    } else { // restore 
     setChart(name, categories, data); 
    } 
} !#" 

a <- rCharts::Highcharts$new() 
a$chart(type = "column") 
a$series(data = list(
    list(y = 15, drilldown = list(data = c(1, 2, 3))), 
    list(y = 20, drilldown = list(data = c(1, 2, 3)))), name = "test") 
a$xAxis(categories = c("Brand A", "Brand B")) 
a$plotOptions(column = list(cursor = 'pointer', point = list(events = list(click = drill_function)))) 
a 

ответ

0

Ok Я нашел грязный хак для достижения drillUp(). Основная идея - просто перезагрузить страницу. Функцию drill_function следует изменить следующим образом:

drill_function <- "#! function() { 
    var drilldown = this.drilldown; 
    function setChart(name, categories, data, color) { 
    chart.xAxis[0].setCategories(categories, false); 
     chart.series[0].remove(false); 
     chart.addSeries({ 
      name: name, 
      data: data, 
      color: color 
     }, false); 
     chart.redraw(); 
    }; 
    if (drilldown) { // drill down 
     setChart(drilldown.name, drilldown.categories, drilldown.data); 
    } else { // restore 
     location.reload(); // <- this one reloads the page! 
     //setChart(name, categories, data,); 
    } 
} !#" 
+0

Хорошее решение. Но обновление может быть ужасным, если вы вставляете эту диаграмму в свое блестящее приложение или уменьшаете презентацию. –

+0

Это правда. Если у кого-то есть лучшая идея. Я хотел бы это услышать :) – pfuhlert

+0

Если я использую этот скрипт на странице вязания html с несколькими диаграммами, другие диаграммы и настройки, которые я сделал, например, масштабирование не влияет. Они состоят после сверления. – pfuhlert