Принимая ту же идею этого поста: R блестящий: отображать сообщение "загрузка ..." во время работы функции
Я бы хотел на самом деле не только отображать "загрузку" сообщение, но также отображает истекшее время пробега. И в конце концов, это окончательное время работы остается отображенным.
Я адаптирую MWE от R-блоггеров https://www.r-bloggers.com/long-running-tasks-with-shiny-challenges-and-solutions/
library(shiny)
ui <- fluidPage(
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
actionButton('run', 'Run')
),
# Show a plot of the generated distribution
mainPanel(
tableOutput("result")
)
)
)
server <- function(input, output) {
N <- 10
result_val <- reactiveVal()
observeEvent(input$run,{
result_val(NULL)
for(i in 1:N){
# Long Running Task
Sys.sleep(1)
# Update progress
incProgress(1/N)
}
result_val(quantile(rnorm(1000)))
})
output$result <- renderTable({
result_val()
})
}
shinyApp(ui = ui, server = server)
Согласно первому ссылка, способ показать сообщение / время / что-то - использовать conditionalPanel
или загрузить библиотеку shinyjs
и использовать такую функцию, как onclick
, toggle
...
Я вижу, что происходит в том случае, когда я нажимаю кнопку «Выполнить», появляется сообщение. Но что происходит, когда код выполняется?
Это первый пункт. Затем, я не хочу простого сообщения, я хочу «таймер», который отображает время работы.
Есть этот пост об общем времени Как рассчитать время реагирующей функции в приложении Shiny в r , а также использование invalidateLater
из https://shiny.rstudio.com/gallery/timer.html Но последний отображает текущее время, а не время выполнения.
Я заблудился о том, как объединить все это, чтобы получить то, что я хочу. С MWE, как только я нажимаю на кнопку «Выполнить», появляется окно с сообщением, например, «истекшее время:» с фактическим временем выполнения.
Я надеюсь, что в моем запросе все ясно , Спасибо за вашу помощь.