Ich habe eine glänzende App eingerichtet, die auf den ausgewählten Daten basiert. Der generierte Bericht muss eine eindeutige ID aufweisen, auf die in Besprechungen verwiesen wird. Ich verstehe, dass ich die Sitzungs-ID verwenden kann, aber ich brauche eine Möglichkeit, die Downloads pro Sitzung zu zählen. Gibt es eine Möglichkeit, Ereignisse außerhalb von Sitzungen zu zählen oder die Anzahl der Sitzungs-IDs seit der ersten Bereitstellung zu zählen?download count in shinyapps.io
Antwort
Ich musste das einmal tun, also hatte ich etwas Code herumliegen. Es hat im Grunde alles in einem csv, dem ich angehängt habe, im Auge behalten. Hier habe ich es in eine glänzende Testplattform eingebaut.
- es die
session$token
für die ID verwendet (vielleicht gibt es etwas besser) - es verwendet
write.table
undread.table
weil sie mit derappend
Option besser verhalten. - es erhöht die Zählung um in dem glänzenden Download-Handler
writetolog
rufen aber Sie können auch die Zählung manuell mit einer zusätzlichen Taste erhöhen (was natürlich nur zu Testzwecken sind) - Es zwei Ausgang hat, eine Zusammenfassung ist des Logs ist der andere ein Dump dessen, was im Log steht. Diese sind für das Debuggen, da die
downloadHandler
manchmal etwas "herausfordernd" sein kann, wenn man mit all dieser Reaktivität interagiert.
Hier ist der Code geändert ein Beispiel sein, wie über das, was Sie brauchen:
library(shiny)
logfname <- "log.csv"
writetolog <- function(newcount,newsessionid,operation){
time <- format(Sys.time(), "%Y-%m-%d %H:%M:%S %Z")
df <- data.frame(time=time,count=newcount,sessionid=newsessionid,operation=operation)
doappend <- file.exists(logfname)
if (doappend){
write.table(df,logfname,append=T,quote=F,col.names=F,sep=",",row.names=F)
} else {
write.table(df,logfname,append=F,quote=F,sep=",",row.names=F)
}
}
getcounts <- function(){
if (!file.exists(logfname)){
return(list(count=0,sessioncount=0))
}
df <- read.table(logfname,header=T,sep=",")
nr <- nrow(df)
rlst <- list(count=sum(df$count),sessioncount=length(unique(df$sessionid)),
lastop=df$operation[nr],lasttime=df$time[nr])
return(rlst)
}
ui <- fluidPage(
titlePanel("Keep a download log"),
sidebarLayout(
sidebarPanel(
actionButton("inccount","Increment Count"),
actionButton("getcount","Refresh Summary"),
actionButton("showlog","Show Log"),
downloadButton("dodownload", "Save to .csv")
),
mainPanel(
h2("Summary of Download Log"),
verbatimTextOutput("showcount"),
h2("Dump of Download Log"),
verbatimTextOutput("loglog")
)
)
)
server <- function(input, output,session) {
observeEvent(input$inccount,{
print("writetolog")
writetolog(1,session$token,"inc count")
})
output$showcount <- renderPrint({
input$getcount
rv <- getcounts()
time <- format(Sys.time(), "%Y-%m-%d %H:%M:%S %Z")
print(sprintf("%s - count:%d sessioncount:%d",time,rv$count,rv$sessioncount))
})
output$loglog <- renderPrint({
input$showlog
if (!file.exists(logfname)) return(NULL)
ldf <- read.csv(logfname)
print(ldf)
})
output$dodownload<-downloadHandler(
filename = function() {
paste(input$table_name, '.csv', sep='')
},
content = function(file) {
write.csv(mtcars, file)
writetolog(1,session$token,"save file")
}
)
}
shinyApp(ui = ui, server = server)
Screen shot: "shinyapp.oi"
Das Speichern der Sitzungswerte in csv macht Sinn und das Filtern nach eindeutigen IDs funktioniert perfekt für den Download-Zähler. Ich fand, dass 'downloadButton' mit dem' downloadHandler' arbeitet, aber nicht mit 'actionButton' und das 'observeEvent' nicht' downloadButton' oder 'downloadHandler'. Irgendeine Idee, wie man 'observeEvent'' downloadButton' anhört? –
Vielen Dank! Funktioniert perfekt, aber es muss 'writetolog (1, Sitzung $ token) 'zweimal ausgelöst werden. Die Anzahl erhöht sich, sobald Sie auf die Schaltfläche klicken und erneut, wenn Sie auf Speichern klicken. –
Sicher, rufen Sie es nicht an zwei Orten? –
- 1. shinyapps.io und github Pakete
- 2. Vitrine Anzeigemodus für veröffentlichten App in shinyapps.io
- 3. Hochladen der Shiny-Anwendung auf "shinyapps.io"
- 4. Hochladen von CSV-Datei nach shinyApps.io
- 5. Download abbrechen in Download
- 6. Abbrechen langsam Download in Python
- 7. Download Wiederbeginn in Listview
- 8. Download und Anzeige von PDF in Shiny
- 9. Deploy R App in shinyapps.io - "Fehler: Parsen Manifest: Manifest-Datei manifest.json Inkonsistenz"
- 10. Fehler: Datei existiert nicht. Hochladen von glänzenden App auf shinyapps.io
- 11. Count iOS App-Downloads
- 12. Android: Download große Datei
- 13. Download-Manager - Limit Download-Geschwindigkeit
- 14. Download Manager Android: Download Complete
- 15. Count Node Depth Count in self Referenz in neo4j
- 16. Count-Befehl in Hadoop
- 17. * SELECT COUNT (*) in SQLite
- 18. Resume Count in IsolatedStorageSettings
- 19. Count in Excel Makro
- 20. Kann Count() in C#
- 21. COUNT Verwendung in GROUP_CONCAT
- 22. Count-Abfrage in SQL
- 23. Datei Download-Fortschritt in MB anzeigen
- 24. Monitor GZip Download Fortschritt in Java
- 25. Download Fortschritt in HTML5
- 26. Download-Manager in Java
- 27. Download Videos in php
- 28. Download Artikel in Joomla
- 29. Download Excel in Backbone.js
- 30. Download-Datei in glänzend
was –
Entschuldigung für die Rechtschreibung, die ich meinte [https://www.shinyapps.io/](https://www.shinyapps.io/) –
Oh, ich wusste nicht, dass das auf dieser Website ausgeführt wurde. Das hat wahrscheinlich etwas mit der Doppelzählung zu tun. –