downloadHandler в блестящем цикле - PullRequest
       0

downloadHandler в блестящем цикле

0 голосов
/ 11 февраля 2020

Я пытаюсь создать блестящее приложение для извлечения данных из таблицы Oracle на основе указанного пользователем идентификатора. Я хочу создать один файл с данными для каждого идентификатора и загрузить его в папку загрузок по умолчанию. Я также хотел бы заархивировать файлы и предоставить пользователю этот файл. Кроме того, приложение предназначено только для загрузки данных, и я действительно не хочу основную панель, поэтому ширина главной панели равна нулю. Если это не способ сделать это, пожалуйста, дайте мне знать. Приложение будет находиться на сервере и, следовательно, потребуется обработчик загрузки. Ниже мой код. Любая помощь с благодарностью.

library(shiny)
library(ROracle)
library(shinyjs)
library(shinyalert)
library(shinyWidgets)


ui <- fluidPage(
  useShinyjs(),
  useShinyalert(),

   # Application title
  titlePanel(fluidRow(
    column(10, "RAINFALL AND ET DATA RETRIEVAL",align="center"),
    column(2, offset = 0,img(height =90,width=250,src="logo.png",align="left"))

  )),

   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(width = 12,
                   helpText("Please enter IDs separated by commas. You can enter up to 25 IDs."),
                   textInput("PixelID", "Pixel ID(s)", value = ""), 


                   helpText("OR"),


                   fileInput('datafile','Choose csv file to upload Pixel IDs.The csv file should have Pixel IDs in the first column WITHOUT ANY HEADER.',accept = c('csv','comma-separated-values','.csv')),

                   helpText("Please select a parameter you would like to retrieve."),
                   radioButtons("ParameterType", "Parameters",
                                choices = c("Rainfall Estimates","Evapotranspiration Estimates"),
                                selected = "None"),
dateInput("startdate","Data From", format = "yyyy-mm-dd",max = Sys.Date()),
                                    dateInput("enddate","Data To", format = "yyyy-mm-dd",max = Sys.Date()),
br(), br(),
                   actionBttn("goButton","Go!",color = "default",style = "fill",size = "lg"),
                   br(),br(),
                   uiOutput("download"),
mainPanel(width=0)
   )
)

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

  data<-eventReactive(input$goButton,{
    if(is.null(input$PixelID) || input$PixelID == ""){
      req(input$datafile)
      infile<-input$datafile
      PixelList<-read.table(infile$datapath, header = FALSE, sep = ",", stringsAsFactors = FALSE)
      colnames(PixelList)<-"PixelNum"
      PixelList_comma<-paste(PixelList$PixelNum, collapse = ",")} else{
        if(input$PixelID != ""){
          PixelList<-data.frame(strsplit(input$PixelID,","))
          colnames(PixelList)<-"PixelNum"
          PixelList_comma<-input$PixelID
        }}

    drv <- dbDriver("Oracle")

    connection <- dbConnect(drv, username = "xxxx", password = "xxxxx", dbname = "xxxx")

    if(input$ParameterType=="Rainfall Estimates"){



        for(i in 1:nrow(PixelList)){
          raindata<-dbGetQuery(connection, paste("select PIXEL, TO_CHAR(tsdatetime_dt, 'MM/DD/YYYY HH24:MI') as DATE_TIME, tsvalue_ms as RAINFALL from xxxx
                            where feature_id =",PixelList[i,1]," order by tsdatetime_dt", sep=""))  
        }

        dbDisconnect(conn = connection)


    }
    return(raindata)


  })
output$download <- renderUI({

    downloadButton("downloadData", "Download")




  })
  output$downloadData <- downloadHandler(
    filename = function() {
      paste("testnexrad",".zip",sep = "")
    },
    content = function(file) {
      for(i in 1:nrow(PixelList)){
     #No idea what to do here   


      }

    }
  ) 
}




# Run the application 
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...