This seems like a very obvious question but I haven't found anything on the subject.
How can I refresh a shiny application (the equivalent of pressing F5, or clicking the "Reload App" button in RStudio)?
ui.R
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
actionButton("goButton", "Refresh")
),
mainPanel(
h4("I would really like to refresh this please.")
)
))
server.R
shinyServer(function(input, output,session) {
observe({
if(input$goButton==0) return(NULL)
isolate({
#
# I would like to refresh my session here with some sort of
# function like session(refresh)...
})
})
})
I don't think I want to use stopApp() - I just want to refresh it such that it's in the same state as when it is loaded.
UPDATE
On the RStudio website, it shows here how to manage a user's session from the server. Specifically,
$ sudo rstudio-server suspend-session <pid>
Is there the equivalent function as the user, from within the app? In the documentation for session info (here), it says there is an onSessionEnded(callback) function. It would be good if there was a session.End() function which performs the above suspend-session function!
You can add a refresh icon and popover to your app by including the following in your ui code:
It should give you this:
You can use the
history.go(0)
js-method to reload the page and thus reset the session, e.g. from a link:Furthermore you can use the
shinyjs
package to execute javascript from within the server: