Загрузка сообщения во время работы системной функции R - PullRequest
1 голос
/ 11 июля 2019

Мое приложение Shiny имеет системную функцию, которая может занять некоторое время.Я хотел бы отобразить сообщение «Загрузка ...» или загрузку, когда мое приложение переходит к функции.После завершения я бы хотел, чтобы анимация исчезла или отобразилась проверка.Моя функция выглядит так:

observeEvent(input$send, {

    shinyalert("Your request has been sent! Please wait. An email will be sent to you in the next few minutes.",type = "success")


    #-------- SYSTEM FUNCTION --------#
    sys <- paste('/home/user/sen2extract/blabla.sh ',
                 shpWGS$V1,' ',
                 paste(input$indice, collapse = ','), ' ',
                 input$dates[1], ' ',
                 input$dates[2],
                 sep = "")
    system(sys)

1 Ответ

1 голос
/ 11 июля 2019

Примерно так:

library(shiny)
library(shinyjs)

css <- "
.busy { 
  position: fixed;
  z-index: 1000;
  top: 50%;
  left: 50%;
  margin-top: -100px;
  margin-left: -50px;
  display: none;
  background-color: rgba(230,230,230,.8);
  text-align: center;
  padding-top: 20px;
  padding-left: 30px;
  padding-bottom: 40px;
  padding-right: 30px;
  border-radius: 5px;
}"

ui <- fluidPage(
  useShinyjs(),
  tags$head(tags$style(css)),
  tags$div(class = "busy", 
           tags$img(src = "https://loading.io/spinners/comets/lg.comet-spinner.gif")),
  actionButton("go", "Go")
) 

server <- function(input, output, session){

  observeEvent(input$go, {
    runjs("$('.busy').show();")
  }, priority = 1, ignoreInit = TRUE)

  observeEvent(input$go, {
    Sys.sleep(5)
    runjs("$('.busy').hide();")
  }, ignoreInit = TRUE)
}

shinyApp(ui, server)

Я использую Sys.sleep для имитации вашего system(sys).

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