if(interactive()) {
library(shiny)
library(ravedash)
rave_id <- paste(sample(c(letters, LETTERS, 0:9), 20, replace = TRUE),
collapse = "")
ui <- function(req) {
query_string <- req$QUERY_STRING
if(length(query_string) != 1) {
query_string <- "/"
}
query_result <- httr::parse_url(query_string)
if(!identical(toupper(query_result$query$standalone), "TRUE")) {
# normal page
basicPage(
output_gadget_container(
plotOutput("plot", brush = shiny::brushOpts("plot__brush")),
)
)
} else {
# standalone viewer
uiOutput("viewer")
}
}
server <- function(input, output, session) {
bindEvent(
safe_observe({
query_string <- session$clientData$url_search
query_result <- httr::parse_url(query_string)
if(!identical(toupper(query_result$query$module), "standalone_viewer")) {
# normal page
register_rave_session(session = session, .rave_id = rave_id)
register_output(
renderPlot({
plot(1:100, pch = 16)
}),
outputId = "plot", export_type = "pdf",
output_opts = list(brush = shiny::brushOpts("plot__brush"))
)
output$plot <- renderPlot({
input$btn
plot(rnorm(100), pch = 16)
})
} else {
# standalone viewer
standalone_viewer(outputId = "plot", rave_id = rave_id)
}
}),
session$clientData$url_search
)
}
shinyApp(ui, server, options = list(port = 8989))
}
Run the code above in your browser using DataLab