Open
Description
Here is a minimal example of the behavior. If the jstree output is created using renderUI()
in the server, the updating of the tree does not work as expected. (Sidenote: I do not know why the second Root folder is not showing in my example either.)
library(shiny)
library(jsTreeR)
nodes1 <- list(
list(
text = "Root1A",
children = list(
list(text = "Child1A1")
)
),
list(
text = "Root1B",
children = list(
list(text = "Child1B1"),
list(text = "Child1B2")
)
)
)
nodes2 <- list(
list(
text = "Root2A",
children = list(
list(text = "Child2A1"),
list(text = "Child2A2")
)
),
list(
text = "Root2B",
children = list(
list(text = "Child2B1")
)
)
)
ui <- fluidPage(
selectInput("node_select", "Select Node List", list("Node 1" = "n1", "Node 2" = "n2")),
jstreeOutput("dirtree1"),
uiOutput("dirtree2_ui")
)
server <- function(input, output, session) {
nodes <- reactiveVal(list())
observeEvent(input$node_select, nodes(ifelse(input$node_select == "n1", nodes1, nodes2)))
output$dirtree2_ui <- renderUI({
tagList(
h2(paste("You have selected", input$node_select)),
jstreeOutput("dirtree2")
)
})
output$dirtree1 <- renderJstree(jstree(isolate(nodes())))
output$dirtree2 <- renderJstree(jstree(isolate(nodes())))
observeEvent(nodes(), {
jsTreeR::jstreeUpdate(session, "dirtree1", nodes())
jsTreeR::jstreeUpdate(session, "dirtree2", nodes())
}, ignoreInit = TRUE)
}
shinyApp(ui, server)
Metadata
Metadata
Assignees
Labels
No labels