Glänzend: Druck Konsolenausgabe in ein text-Objekt, ohne zu warten, für eine Funktion zu beenden

Ich bin neu, zu Glänzend und zu kämpfen, erheblich.

Muss ich zu geben, meine Glänzende Benutzer die Möglichkeit zum download einer Daten-Datei (im wesentlichen der Abfrage einer Datenbank). Die Abfrage geht von einem zum anderen. Glänzend unterstützt Daten nativ, aber nicht die Zeit, so dass ich haben, um dem Benutzer ein Textfeld mit einem submitButton

Das problem ist ich brauche den submit-button tun, eine Validierung test auf beiden text-Eingänge, und die entweder:
1) gibt eine Fehlermeldung Zurück, wenn entweder die Eingabe ist nicht gültig
2) Laden Sie die Daten, und gibt status-updates (Daten kann eine Stunde dauern, ganz einfach-ich will nicht zu verlassen-Benutzer hängen).

Entdeckte ich etwas namens renderPrint schien wie eine gute option, dass Sie vorgibt zu Ausgang was hat drucken auf der Konsole--dann kann ich entweder eine Fehlermeldung ausgegeben oder die Anzeige der normalen Ausgabe in der Konsole aus die Daten-download-Vorgang. Aber dann hält es die gedruckte Ausgabe, bis der gesamte Prozess fertig ist.

Ich bin am überlegen eine andere mögliche Lösung wäre, zurück zu gehen, um renderText und dann machen Sie den text direkt aus der queryMagic Funktion--wie geht es durch den download-Prozess, es kann regelmäßig zu aktualisieren output$text mit neuen text. Aber ich bin mir nicht sicher, wie genau dies zu tun.

ui.R:

shinyUI(fluidPage(

  # Application title
  titlePanel("Demo Market Report"),

  fluidRow(

    column(4,
           h3("Extract Data"),
           helpText("Enter a start and end date/time of data to download. Be aware it takes about 10 minutes to download one hour of data.", strong("Date/time should be entered in yyyy-mm-dd hh:mm:ss format.")),
           textInput("fromDatetime", "From:", value = paste(with_tz(Sys.time(), "EST")-3600 )),
           textInput("toDatetime", "To:", value = paste(with_tz(Sys.time(), "EST"))),
           submitButton("Download Data Extract")
    ),
    column(4,
           textOutput("text1")
    )
  )


))

server.R:

shinyServer(
  function(input, output) {

    logText <- reactive({
      if (input$fromDatetime == "a") {
        data = queryMagic(blah,blah,blah) #this just gets the data, function is already used in production, I'll feed the shiny input into it but that seems straightforward
        return("victory")
      }
      else return("invalid")
    })

    output$text1 <- renderPrint({
      paste(logText())
    })


  }
)

Vielen Dank im Voraus für die Hilfe.

InformationsquelleAutor Mike Sherman | 2014-11-26

Schreibe einen Kommentar