Обновить actionButton при выполнении длинного расчета - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть shiny::actionButton, который запускает длинный расчет.Я хотел бы обновить ярлык кнопки действия, что выполняется вычисление, но я не могу заставить его работать.

Вот минимальный рабочий пример:

library(shiny)

ui <- fluidPage(actionButton("button", "Calculate"))

server <- function(session, input, output) {
  observeEvent(input$button, {
    print("start calculation")
    updateActionButton(session, "button", "Calculating...")

    # emulate calculation
    Sys.sleep(3)

    print("finish calculation")
    updateActionButton(session, "button", "Calculate")
  })
}

shinyApp(ui, server)

Нокнопка вроде не меняется.Похоже, кнопка просто показывает то, что было последним updateActionButton, и игнорирует все, что было раньше.

Как мне заставить actionButton корректно обновляться?

1 Ответ

0 голосов
/ 29 апреля 2019

Вместо изменения метки кнопки можно использовать индикатор выполнения.
Э.Г.

ui <- fluidPage(actionButton("button", "Calculate"))

server <- function(session, input, output) {
  observeEvent(input$button, {
    #print("start calculation")
    updateActionButton(session, "button", "Calculating...")
    progress <- Progress$new(session, min=1, max=15)
    on.exit(progress$close())

    progress$set(message = 'Calculation in progress',
                 detail = 'This may take a while...')

    # emulate calculation
    #Sys.sleep(3)
    for (i in 1:6) {
      progress$set(value = i)
      Sys.sleep(0.5)
    }

    print("finish calculation")
    updateActionButton(session, "button", "Calculate")

    session$sendCustomMessage(type = 'testmessage', message = 'Selected Points were set positive.')
  })
}

shinyApp(ui, server)

Подробнее см. Здесь reports_progress .

...