Skip to content

Instantly share code, notes, and snippets.

@ptoche
Created January 13, 2014 18:14
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ptoche/8405209 to your computer and use it in GitHub Desktop.
Save ptoche/8405209 to your computer and use it in GitHub Desktop.
Demo on debug panel, may be useful for large projects, something like this should be made into a convenience function and a basic part of shiny
# server.R
library("shiny")
shinyServer(
function(input, output, session) {
# Debug Area
output$Console <- renderUI({
btnTags <- function(){tags$style(type = 'text/css',"")}
if (is.null(input$console) || !nzchar(input$console) || input$console == 0) {
btnTags <- function(){tags$style(type = 'text/css'
, '#console {color: rgb(221,17,68);}'
)}
}
list(btnTags(),actionButton(inputId = "console", label = "console"))
})
observe(label = "console", {
if (is.null(input$console) || !nzchar(input$console)) {return()}
if (input$console != 0) {
options(browserNLdisabled = TRUE)
saved_console <- ".RDuetConsole"
if (file.exists(saved_console)) {load(saved_console)}
isolate(browser())
save(file=saved_console,list=ls(environment()))
}
})
}
)
# ui.R
library("shiny")
pageWithMultiPanels <- function(headerPanel,sidePanel,mainPanel,footerPanel) {
bootstrapPage(div(class = "container-fluid"
, div(class = "row-fluid", headerPanel)
, div(class = "row-fluid", sidePanel, mainPanel)
, div(class = "row-fluid", footerPanel)
) )
}
footerPanel <- function(...) {
div(class="footer", hr(), ...)
}
shinyUI(
pageWithMultiPanels(
headerPanel = headerPanel(h5("Debug Panel - Demo"))
,
mainPanel = mainPanel(
helpText(h5("This is the app's main panel"))
,
helpText(a("Demo based on shiny-discuss message by Alex Brown", href="https://groups.google.com/forum/#!topic/shiny-discuss/YIusppqZ8cg", target="_blank"))
)
,
sidePanel = sidebarPanel(
helpText(h5("This is the app's side panel"))
,
helpText(a("Demo by Patrick Toche, 14 January 2014", href="https://gist.github.com/ptoche/8405209", target="_blank"))
)
,
footerPanel = footerPanel(
checkboxInput(inputId = "showDebug", label = "Debug?", value = FALSE)
,
conditionalPanel(condition = "input.showDebug == true"
, wellPanel(
h5("Debug Panel:")
, helpText(HTML("Click to run code in the console"))
, uiOutput("Console"), br()
, helpText(HTML("The console should display a Browse prompt: <code>Browse[1]></code>"))
, helpText(HTML("Enter <code>c</code> at the prompt to stop communication with the console and resume with the shiny app"))
)
)
)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment