# Shiny events demo

#### Martin John Hadley, @martinjhnhadley

Using `hc_add_event_point` and `hc_add_event_series` it is possible extract click and mouse over events from a Highchart within a Shiny app. To extract this information from the chart, `input$` variables are created as follows:

    paste0("highchart_output", "_", "eventType")

    ## [1] "highchart_output_eventType"

In the example app below, there are two variables added to the `input$` object:

- `input$plot_hc_click`
- `input$plot_hc_mouseOver`

    library(shiny)

    ##
    ## Attaching package: 'shiny'

    ## The following object is masked from 'package:jsonlite':
    ##
    ##     validate

    if(interactive()){

      shinyApp(
        ui = fluidPage(

          wellPanel("mouseOver and click points for additional information"),
          uiOutput("click_ui"),
          uiOutput("mouseOver_ui"),
          highchartOutput("plot_hc")

          ),
        server = function(input, output) {

          df <- data.frame(x = 1:5, y = 1:5, otherInfo = letters[11:15])

          output$plot_hc <- renderHighchart({

            highchart() %>%
              hc_add_series(df, "scatter") %>%
              hc_add_event_point(event = "click") %>%
              hc_add_event_point(event = "mouseOver")

          })

          observeEvent(input$plot_hc, print(paste("plot_hc", input$plot_hc)))

          output$click_ui <- renderUI({

            if(is.null(input$plot_hc_click)) return()

            wellPanel("Coordinates of clicked point: ",input$plot_hc_click$x, input$plot_hc_click$y)

          })

          output$mouseOver_ui <- renderUI({

            if(is.null(input$plot_hc_mouseOver)) return()

            wellPanel("Coordinates of mouseOvered point: ",input$plot_hc_mouseOver$x, input$plot_hc_mouseOver$y)

          })

        }

      )

    }