У меня есть три куска кода для перезапуска приложения, остановки приложения (кнопки) и закрытия браузера.
для остановки Я использую stopApp (), которая также освобождает сеанс RStudio для перезапуска. Я использую функцию сброса javascript из этого вопроса SO здесь
Проблема возникает с третьимкусок кода, который я надеялся использовать для выпуска RStudio, когда пользователь закрывает браузер.Обычно RStudio остается «занятым», когда вы делаете это.
session$onSessionEnded(stopApp)
позаботится об этом, но когда я помещаю эту строку кода в свое приложение в сочетании с функцией сброса, это приводит к тому, что RStudio также освобождается из-за занятости при нажатии кнопки сброса, что означает, чтоприложение больше не связано с R после сброса.
library(shiny)
library(shinyjs)
library(shinydashboard)
jsResetCode <- "shinyjs.reset = function() {history.go(0)}" # Define the js method that resets the page
ui <- dashboardPage(title="MYAPP",
dashboardHeader(),
dashboardSidebar(),
dashboardBody(width = 12,
shinyjs::useShinyjs(),
shinyjs::extendShinyjs(text = jsResetCode),
actionButton(inputId = "Reset_btn", label = icon("refresh "), onclick = ""),
actionButton(inputId = "CloseApp", label = icon("off", lib = "glyphicon"))
)
)
server <- function(input, output, session) {
observeEvent(input$Reset_btn, {
shinyjs::reset('MYAPP')
})
observeEvent(input$CloseApp, {
stopApp()
})
# session$onSessionEnded(stopApp) # breaks the reset when active (i.e. uncommented)
}
shinyApp(ui, server)