1

我正在开发一个闪亮的应用程序,它有两个组件 Sankey Diagram 和一个操作按钮,单击按钮会弹出“SaveMsg”对话框。

我看到意外的行为,如果我在一个仪表板中使用操作按钮和 Sankeyvisualization,单击操作按钮,仪表板屏幕变灰。

但是,如果我评论 Sankey 代码并在 UI 上仅保留操作按钮,则操作按钮会通过显示“保存成功”的弹出消息按预期工作。如果我评论操作按钮代码并在 UI 中只保留 Sankey 代码,我可以在仪表板上看到 sankey 输出。

Sankey 代码和操作按钮都按预期分别工作,但是如果我将两者都放在一个仪表板操作按钮中,则屏幕外的仪表板屏幕呈灰色。

我还附上了示例代码-

library(shiny)
library(networkD3)
library(shinydashboard)
value <-  c(12,21,41,12,81)
source <- c(4,1,5,2,1)
target <- c(0,0,1,3,3)
edges2 <- data.frame(cbind(value,source,target))

names(edges2) <- c("value","source","target")
indx  <- c(0,1,2,3,4,5)
ID    <- c('CITY_1','CITY_2','CITY_3','CITY_4','CITY_5','CITY_6')
nodes <-data.frame(cbind(ID,indx))

ui <- dashboardPage(
  dashboardHeader(
  ),
  dashboardSidebar(disable = TRUE),
  dashboardBody(
    fluidPage(
      actionLink("savebtn", "Save button")
      ,sankeyNetworkOutput("simple")
    )
  )
)

server <- function(input, output,session) {

  # Show modal when button is clicked.
  observeEvent(input$savebtn, {
    showModal(modalDialog(
      title = "Save successful"))
  })

  output$simple <- renderSankeyNetwork({
    sankeyNetwork(Links = edges2, Nodes = nodes,
                  Source = "source", Target = "target",
                  Value = "value",  NodeID = "ID" 
                  ,units = "SSN" )
  })
}

shinyApp(ui = ui, server = server)
4

2 回答 2

1

我还没有深入研究这个问题,所以我不确定为什么会这样。但是,如果您要显示的模态只是一些文本(不包含闪亮的元素),您可以使用shinyalertwhich 也可以显示模态(尚未在 CRAN 上,尚未发布)。这是您使用 shinyalert 的代码。希望有帮助

library(shiny)
library(networkD3)
library(shinyalert)
value <-  c(12,21,41,12,81)
source <- c(4,1,5,2,1)
target <- c(0,0,1,3,3)
edges2 <- data.frame(cbind(value,source,target))

names(edges2) <- c("value","source","target")
indx  <- c(0,1,2,3,4,5)
ID    <- c('CITY_1','CITY_2','CITY_3','CITY_4','CITY_5','CITY_6')
nodes <-data.frame(cbind(ID,indx))

ui <- dashboardPage(
  dashboardHeader(
  ),
  dashboardSidebar(disable = TRUE),
  dashboardBody(
    fluidPage(
      useShinyalert()
      ,actionLink("savebtn", "Save button")
      ,sankeyNetworkOutput("simple")
    )
  )
)

server <- function(input, output,session) {

  # Show modal when button is clicked.
  observeEvent(input$savebtn, {
    shinyalert("Save successful")
  })

  output$simple <- renderSankeyNetwork({
    sankeyNetwork(Links = edges2, Nodes = nodes,
                  Source = "source", Target = "target",
                  Value = "value",  NodeID = "ID" 
                  ,units = "SSN" )
  })
}

shinyApp(ui = ui, server = server)
于 2017-09-18T04:12:27.517 回答
0

更新(2019.05.20)

此问题已通过开发版解决,shiny并应尽快在 CRAN 上发布shiny v1.3.3


此问题已在此处报告,我相信它与此处报告的内容相似。使用的 JavaScriptsankeyNetwork()添加了一个<foreignObject><xhtml:body>...包装 SVG 标题的方法,以便在旧版本的 IE 中使用多行标题。该结构显然与bootstrap-datepicker所做的相冲突,经过一些测试,我可以验证这似乎也是这里发生的事情的根源。已经有一个拉取请求应该最终解决这个问题networkD3,但它还没有经过审查和合并。一旦有了,安装和使用开发版本networkD3应该可以解决这个问题。我认为这也应该在上游修复,因为<foreignObject><xhtml:body>...结构似乎是有效的 HTML/SVG。

于 2017-09-18T11:00:31.700 回答