Скрыть кнопку «Загрузить» после завершения загрузки - PullRequest
0 голосов
/ 11 марта 2020

У меня есть приложение, которое передает данные в отчет rmarkdown, который загружается после генерации.

Кнопка загрузки скрыта, пока отчет не будет сгенерирован. Я хотел бы скрыть его после загрузки отчета или изменения ввода textInput.

Мой код такой, как показано ниже:

  library(shiny)
  library(sqldf)
  library(DT)
  library(statquotes)

  data(quotes)
  quotes
    ui <- fluidPage(
       sidebarLayout(
         sidebarPanel(
            textInput("search1", " Search 1 ",  '', placeholder = "Type keyword/statement"),
            textInput("search2", " Search 2 ",  '', placeholder = "Type keyword/statement"),
            actionButton("generatereport", "Generate Report", icon = icon("file")),
           conditionalPanel(condition = "output.reportbuilt", 
                   # This button appears after the report has been generated and is ready for download.
              downloadButton("downloadReport", "Download Report"))),
       mainPanel(DT::dataTableOutput("table"))
      ))

 server <- function(input, output, session) { 
     #Get data
       data <- reactive({
          if (input$search1 != "" | input$search2 != "") {     
           sqldf(paste0("SELECT  *  
                     FROM quotes 
                   WHERE  (text LIKE '%",input$search1,"%' 
                   AND text LIKE '%",input$search2,"%' )"))
                     }
                           })

        #pass data to the table output
         output$table <- DT::renderDataTable({
              data()
              })

       ######### DOWNLOAD REPORTS ######################

      report <- reactiveValues(filepath = NULL)  

          observeEvent(input$generatereport, {
          tmp_file <- paste0(tempfile(), ".Rmd")
           src <- normalizePath('report.Rmd')
          owd <- setwd(tempdir())
          on.exit(setwd(owd))
          file.copy(src, 'report.Rmd', overwrite = TRUE)
           library(rmarkdown)
            render('report.Rmd', html_document(), output_file = tmp_file)
           report$filepath <- tmp_file
          })


         # Hide download button until report is generated
       output$reportbuilt <- reactive({
            return(!is.null(report$filepath))
                })
        outputOptions(output, 'reportbuilt', suspendWhenHidden= FALSE)

    output$downloadReport <- downloadHandler(
           filename = function() {
          paste('report', sep = '.', 'html')
        },
       content = function(file) {
          withProgress(message = 'REPORT DOWNLOAD IN PROGRESS', 
               detail = 'This may take a while...',  
               min = 0, max = 5, value =  0,
               {

                 file.copy(report$filepath, file)
               })
          })
      ######### DOWNLOAD REPORTS ######################
        }
        shinyApp(ui, server)

Файл .rmd имеет следующий вид:

     ---
    title: "Report "
    author: "Generated by trial"
    date: '`r paste("Created on", Sys.Date())`'
   output:
       html_document: default
      pdf_document: default
       keep_md: true
      ---

     ### Relevant Data
      <div align="center">
      ```{r , echo=FALSE, message=FALSE, warning=FALSE}

      DT::datatable(data(), rownames = FALSE, filter="top", options = list(pageLength = 10, scrollX=T) )

      ```
       </div>

Можно ли как-то скрыть кнопку загрузки после завершения загрузки или если я изменю ввод в виджетах textInput?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...