2017-03-23 2 views
1

J'ai configuré une minuterie comme valeurs réactives. Valeurs $ total. Il est conçu pour le compte à rebours jusqu'à 2017-03-22 23:55:40 et lorsque les valeurs $ total sont décomptées à zéro, il est supposé ajouter un total à values2 $ total. Cependant, lorsque je lance une application, les valeurs $ total sont gelées et ne bougent pas. Comment puis-je le faire décompter?Obtenir une application brillante pour réagir lorsque la minuterie compte à zéro

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) 

Répondre

0

Je suppose que cela est ce que vous voulez:

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())) 
    }) 
}