Сетевой виджет добавляется к телу в NetworkAnimation.html
- Javascript: target = d3.select('body').append('div').style({width: '100%', height: '100%'}).node();
.
Если вы хотите, чтобы он был только на вкладке 2, вы можете включить div с id и изменить строку JavaScript, чтобы она добавлялась к вашему div.
Мое приложение выглядит так:
ui <- fluidPage(
## Include shinyjs
useShinyjs(),
## Set ID of navbarPage
navbarPage("ShinyExample", id = "navid",
tabPanel("TEST", includeHTML("test.html")),
tabPanel("TEST2",
## Include new DIV here & Set initial height
div(id="appendhere", style="height: 1090px;"),
includeHTML("NetworkAnimation.html"))
)
)
server <- function(input, output) {
observe({
req(input$navid == "TEST2")
runjs('$("#appendhere").resize()')
})
}
# Run the application
shinyApp(ui = ui, server = server)
, а JS заменяется на
target = d3.select('#appendhere').append('div').style({width: '100%', height: '100%'}).node();
Мне также пришлось включить shinyjs
, чтобы запустить JavaScript, когда TAB2 активен. Ширина / высота svg вычисляется при рендеринге и поэтому изначально 0 (или фактически -60). Если вы удалите строку runjs
, вы увидите, что сеть не видна.
При изменении размера браузера сеть перерисовывается, а ширина / высота обновляются. Поэтому мы вызываем $("#appendhere").resize()
, когда TAB2 активен.
В консоли браузера по-прежнему отображается следующая ошибка, но, похоже, все работает нормально.
Uncaught TypeError: a is undefined