Получение блестящего приложения реагировать, когда таймер обратного отсчета до нуля

Я установил таймер в качестве реактивных значений. значения $ всего. Он рассчитан на обратный отсчет времени до 2017-03-22 23:55:40, и когда значения $ total будут отсчитываться до нуля, предполагается, что они будут прибавлять счет к values2 $ total. Однако когда я запускаю приложение, значения $ total замораживаются и не перемещаются. Как я могу заставить его вести обратный отсчет?

library(shiny)
library(lubridate)

ui <- fluidPage(
  "Total:",
  textOutput("total", inline = TRUE),
  "Draft Count:",
  textOutput("draft_count", inline = TRUE),
  "Time:",
  textOutput("time",inline=TRUE)
)

server <- function(input, output, session) {
  values <- reactiveValues(total = as.numeric(as.POSIXct("2017-03-22 23:55:40")-now(),units="secs"))
  values2 <- reactiveValues(total = 0)

  observeEvent(values$total <= 0,{
    values2$total <- values2$total + 1
  })

  output$total <- renderText({
    invalidateLater(1000,session)
    values$total
  })

  output$draft_count <- renderText({
    invalidateLater(1000,session)
    values2$total
  })

  output$time <- renderText({
    invalidateLater(1000,session)
    as.character(as.POSIXct(now()))
  })
}

shinyApp(ui = ui, server = server)

1 ответ

Я думаю, это то, что вы хотите:

server <- function(input, output, session) {
#values <- reactiveValues(total = as.numeric(as.POSIXct("2017-03-22 23:55:40")-now(),units="secs"))
  val <- reactive({
    invalidateLater(1000,session)
    <- as.numeric(as.POSIXct("2017-03-22 23:55:40")-now(),units="secs")
  } )
  values2 <- reactiveValues(total = 0)

  observeEvent(values$total <= 0,{
    values2$total <- values2$total + 1
  })

  output$total <- renderText({
    invalidateLater(1000,session)
    val()
  })

  output$draft_count <- renderText({
    invalidateLater(1000,session)
    values2$total
  })

  output$time <- renderText({
    invalidateLater(1000,session)
    as.character(as.POSIXct(now()))
  })
}
Другие вопросы по тегам