Заполнить все окно TabItem в блестящей панели инструментов

#r #shiny #shinydashboard

#r #блестящий #shinydashboard

Вопрос:

Я рассмотрел некоторые похожие вопросы, но мне не повезло с другими решениями. Я пытаюсь, чтобы uiOutput / htmlOutput TabItem в блестящей панели инструментов отображал полную сеть из пакета netCoin. Хоть убей, я не могу понять, почему это не сработает. Воспроизводимый пример ниже:

 
library(shinydashboard)
library(netCoin)

ui = dashboardPage(
  dashboardHeader(title = "Example"),
  dashboardSidebar(
    sidebarMenu(
      menuItem("Example", tabName = "example", icon = icon("user"))
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName = "example",
              fillPage(
                tags$style(type = "text/css", "#fullpage {height: calc(100vh - 80px) !important;}"),
                uiOutput("fullpage")
              )
      )
    )
  )
)

server = function(input, output) {
  output$fullpage = renderUI({
    frame <- data.frame(A = c("Man; Women", "Women; Women",
                              "Man; Man", "Undet.; Women; Man"))
    data <- dichotomize(frame, "A", sep = "; ")[2:4]
    C <- coin(data) # coincidence matrix
    N <- asNodes(C) # node data frame
    E <- edgeList(C) # edge data frame
    net = netCoin(N, E) # netCoin object
    shinyCoin(net)
  })
}

shinyApp(ui, server)
 

Текущий вывод выглядит следующим образом, хотя я стремлюсь к тому, чтобы он заполнял всю страницу:

введите описание изображения здесь

Комментарии:

1. Я не понимаю, к чему ты клонишь. Я получаю пустую страницу с 'Not found' надписью in it.

2. @RonakShah У вас установлен пакет netCoin?

3. Да, я установил этот пакет.

4. @ronakshah вы получаете это для всего приложения или только в рамках TabItem?

Ответ №1:

Понял это. Мне пришлось изменить тег iframe в include.html Папка пакета netCoin расположена по адресу /Library/Frameworks/R.framework/Versions/4.0/Resources/library/netCoin/www и содержит высоту аргумента: 100%.

Теперь он читает:

 <iframe class="netcoin" style="border:none;overflow:hidden;width:100%;height:100%;min-height:400px;" src="index.html"></iframe>
<script type="text/javascript">
window.onload = function(){
  var iframe = document.querySelector('iframe.netcoin');
  iframe.style.height = iframe.offsetWidth/1.41   "px";
}
</script>