节省点击动作按钮的时间

时间:2016-10-23 04:12:57

标签: shiny shiny-server

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

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

})

1 个答案:

答案 0 :(得分:1)

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

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)