节省点击闪亮操作按钮的时间

Saving time on clicking action button in shiny

我创建了一个闪亮的应用程序来保存单击这些按钮时的开始时间和结束时间。我有三个按钮:StartEndDownload,这个应用程序旨在节省我单击 StartEnd 按钮然后保存的时间单击 Download 按钮时 .csv 中的文件。但它节省了点击下载按钮的时间。请帮我妥善保存不同的时间。

library(shiny)

shinyUI(fluidPage(
  titlePanel("Header"),
  sidebarLayout(
    sidebarPanel(
      actionButton("start", "Start"),
      tags$br(),
      actionButton("end", "End"),
      tags$br(),
      downloadButton("downloadData", "Download")
    ),

    mainPanel(

    )
  )
))

shinyServer(function(input, output) {

  startTime <- eventReactive(input$start,{
    Sys.time()
  })

  endTime <- eventReactive(input$end,{
    Sys.time()
  })


  data <- reactive({data.frame(start    = startTime(),
                               end = endTime())})


  output$downloadData <- downloadHandler(
    filename = function() {
      "download.csv"
    },
    content = function(file) {
      write.csv(data(), file, row.names = F)
    }
  )

})

使用全局变量就可以了。下面的示例(编辑为使用每个会话的全局变量)。

library(shiny)

ui <- shinyUI(fluidPage(
  titlePanel("Header"),
  sidebarLayout(
    sidebarPanel(
      actionButton("start", "Start"),
      tags$br(),
      actionButton("end", "End"),
      tags$br(),
      downloadButton("downloadData", "Download")
    ),

    mainPanel(

    )
  )
))

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

  starttime <- NULL
  endtime <- NULL

  observeEvent(input$start, {
    starttime <<- Sys.time()
  })

  observeEvent(input$end, {
    endtime <<- Sys.time()
  })

  output$downloadData <- downloadHandler(
    filename = function() {
      "download.csv"
    },
    content = function(file) {
      data <- data.frame(start=starttime, end=endtime)
      write.csv(data, file, row.names = F)
    }
  )

})

shinyApp(ui = ui, server = server)