使用visEvents

时间:2018-06-25 01:47:21

标签: r shiny visnetwork

我已经编写了代码(使用闪亮的代码),创建了一个由多个selectizeInputs以及节点网络(visNetwork)组成的absolutePanel。从一个下拉列表中选择一个选项后,特定节点将突出显示。当前,如果您单击画布并取消选择节点,则下拉列表将重置(使用updateSelectizeInput)。但是,如果重复此过程,则下拉列表不会重置。为什么下拉列表仅在首次点击时重置?我在下面包含了一些代码。

任何帮助将不胜感激。

server <- function(input, output, session) {
    output$network_proxy_select <- renderVisNetwork({
      visNetwork(nodes, edges) %>%
      visNodes(font = list(face = "arial,sans-serif")) %>%
      visOptions(highlightNearest = list(enabled = TRUE, degree = 0)) %>%
      visInteraction(navigationButtons = FALSE, keyboard = TRUE) %>%
      visPhysics(stabilization = FALSE) %>%
      visEvents(type="on", click = "function(properties){
                Shiny.onInputChange('click', properties.nodes);
              ;}")
    })

    observe({
      if(is.null(input$click)) { 
        updateSelectizeInput(session, "sel1", selected="")
        updateSelectizeInput(session, "sel2", selected="")
        updateSelectizeInput(session, "sel3", selected="")
        updateSelectizeInput(session, "sel4", selected="")
        updateSelectizeInput(session, "sel5", selected="")
        updateSelectizeInput(session, "sel6", selected="")
      }
    })

    ...
}

ui <- fluidPage(
    sidebarLayout(
      absolutePanel(top=20, left=20, height="auto", width="auto", draggable=FALSE,
        selectizeInput(inputId = "sel1", selected="", choices = c("", ...), multiple = FALSE, width="500px"),
        selectizeInput(inputId = "sel2", selected="", choices = c("", ...), multiple = FALSE, width="500px"),
        selectizeInput(inputId = "sel3", selected="", choices = c("", ...), multiple = FALSE, width="500px"),
        selectizeInput(inputId = "sel4", selected="", choices = c("", ...), multiple = FALSE, width="500px"),
        selectizeInput(inputId = "sel5", selected="", choices = c("", ...), multiple = FALSE, width="500px"),
        selectizeInput(inputId = "sel6", selected="", choices = c("", ...), multiple = FALSE, width="500px")
      ),
      mainPanel(visNetworkOutput("network_proxy_select", height="900px"), width="auto")
    )
)

shinyApp(ui = ui, server = server)

0 个答案:

没有答案