R Shiny, могу ли я включить несколько приложений в один звонок? - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть проблема, когда некоторые пользователи могут иметь доступ к данным, а другие нет.Хотя я могу встраивать проверки данных в существующие приложения, это довольно болезненно (и должно выполняться несколькими пользователями).То, что я хотел бы сделать, это что-то вроде следующего примера:

library(shiny)

jsResetCode <- "shinyjs.reset = function() {history.go(0)}" # Define the js method that resets the page

if (!file.exists("example.csv")) {
  shinyApp(ui = function() {
    fixedPage(useShinyjs(),extendShinyjs(text = jsResetCode),div(
                class="jumbotron",
                tags$p("Please enter your username and password in order to initialize access."),
                div( 
                  textInput("user", "User Name"),
                  passwordInput("pass", "Password"),
                  actionButton("submit", "submit")
                )
              )
    )
  }, 
  server = function(input, output, session) {

    observeEvent(input$submit, {

      write.csv(1, "example.csv")
      js$reset()

      # Want to reload the page now!
    }) 
  }
  )
}

shinyApp(ui = function() {
  fluidPage(plotOutput("myplot"))
}, 
server = function(input, output, session) {

  output$myplot <- renderPlot({plot(rnorm(100))}) 
}
)

Здесь я представляю, что у меня есть некоторый файл аутентификации, пользователь дает свое имя пользователя и пароль, и он генерирует указанный файл и перезапускает, этовремя, не оценивающее первый вызов.

В идеальном мире этот первый сегмент будет затем обернут в функцию auth_check(), которую я только что поместил в начало файла app.R.

Тем не менее, похоже, что тестирование показывает, что первый набор кода просто игнорируется, и оценивается только последний блестящий вызов.

Возможно ли это вообще?Можете ли вы предложить альтернативы, если нет, которые в идеале позволяют мне добавлять код в мой вызов app.R, а не изменять существующее приложение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...