J'essaie de créer un tableau à l'aide de Shiny, dans lequel l'utilisateur peut cliquer sur une ligne afin d'obtenir des informations supplémentaires sur cette ligne. Je pensais avoir compris comment faire (voir le code joint).
Cependant, dès que l'utilisateur clique sur le bouton d'action "getQueue", la fonction observeEvent(input$fileList_cell_clicked, {}) semble être appelée. Pourquoi cet événement serait-il appelé avant même que l'utilisateur ait la possibilité de cliquer sur une ligne ? Est-il également appelé lorsque le tableau est généré ? Existe-t-il un moyen de contourner ce problème ?
Je dois remplacer "output$devel <- renderText("cell_clicked_called")" par un code qui aura toutes sortes d'erreurs s'il n'y a pas de cellule réelle à laquelle se référer.
Merci pour tout conseil !
ui <- fluidPage(
actionButton("getQueue", "Get list of queued files"),
verbatimTextOutput("devel"),
DT::dataTableOutput("fileList")
)
shinyServer <- function(input, output) {
observeEvent(input$getQueue, {
#get list of excel files
toTable <<- data.frame("queueFiles" = list.files("queue/", pattern = "*.xlsx")) #need to catch if there are no files in queue
output$fileList <- DT::renderDataTable({
toTable
}, selection = 'single') #, selection = list(mode = 'single', selected = as.character(1))
})
observeEvent(input$fileList_cell_clicked, {
output$devel <- renderText("cell_clicked_called")
})}
shinyApp(ui = ui, server = shinyServer)