Как объединить функции сброса, остановки и закрытия с выпуском RStudio в приложении Shiny? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть три куска кода для перезапуска приложения, остановки приложения (кнопки) и закрытия браузера.

для остановки Я использую 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...