R Highcharter - firePointEvent при нажатии кнопки действия - PullRequest
0 голосов
/ 11 января 2019

Я использую R, Shiny и Highcharter, и я хотел бы нажать кнопку действия и развернуть древовидную карту до обозначенного мной раздела. Так, например, я нажимаю кнопку действия "mybutton", и она углубляется в раздел Европа. Я могу захватить событие нажатия, если пользователь фактически нажимает на TreeMap. Но я хотел бы обратить процесс вспять, щелкнув кнопку «Действия» и увеличив масштаб TreeMap в разделе TreeMap, который я назначил вручную. Воспроизводимый код:

library("shiny")
library("highcharter")
library("shinyjs")
library("treemap")
library("viridisLite")
data(GNI2014)

jscode <- "shinyjs.drillDownFunction = function() {
  var chart = $('#hcontainer').highcharts();
  chart.series[0].data[0].firePointEvent('click');
  console.log(chart);}"

jscode2 <- "shinyjs.drillDownFunction2 = function() {
  var chart = $('#hcontainer').highcharts();
  chart.series[0].data[0].series.hcEvents.click[0]();
  console.log(chart);}"

jscode3 <- "shinyjs.drillDownFunction3 = function() {
  var chart = $('#hcontainer').highcharts();
  Highcharts.fireEvent(chart.series[0].data[0], 'click');
  console.log(chart);}"

ui <-
  fluidPage(
    useShinyjs(),
    extendShinyjs(text = jscode, functions = "drillDownFunction"),
    extendShinyjs(text = jscode2, functions = "drillDownFunction2"),
    extendShinyjs(text = jscode3, functions = "drillDownFunction3"),
    fluidRow(
      column(width = 8, highchartOutput("hcontainer"))),
    fluidRow(
      column(width = 4, textOutput("text"))),
    fluidRow(
      column(width = 4, actionButton("mybutton", "Drill Down into TreeMap"),
                        actionButton("mybutton2", "Drill Down into TreeMap"),
                        actionButton("mybutton3", "Drill Down into TreeMap")))
    )

server <- function(input, output) {      

  tm <- treemap(GNI2014, index = c("continent", "iso3"),
                vSize = "GNI", vColor = "population",
                type = "value", palette = magma(12))

  output$hcontainer <- renderHighchart({      

    hctreemap(tm, allowDrillToNode = TRUE, allowPointSelect = TRUE) %>% 
      hc_title(text = "Gross National Income World Data")
  })

  shinyjs::onclick("mybutton", {
    js$drillDownFunction()
  })

  shinyjs::onclick("mybutton2", {
    js$drillDownFunction2()
  })

  shinyjs::onclick("mybutton3", {
    js$drillDownFunction3()
  })

}

shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 25 января 2019

Вы хотели бы использовать метод drillToNode . Вот пример того, как это сделать в JS: http://jsfiddle.net/BlackLabel/Ljoqbc0h

let btn = document.getElementById('btn');

btn.addEventListener('click', function() {
  chart.series[0].drillToNode('id_0');
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...