Shinydashboars tabItems无法正常工作

时间:2015-05-24 08:40:07

标签: r shiny menuitem dashboard tabitem

我正在测试shinydashboard软件包,我无法弄清楚在特定情况下发生了什么。我的仪表板有4个tabItems(抱歉是荷兰语):

  • PROGRAMMA
  • Deelnemers
  • Notulen
  • Overige

仪表板正确加载,但tabItem四(“Overige”)的内容显示在“Notulen”的内容下方。

该应用程序的代码如下:

library(shiny)
library(shinydashboard)
library(markdown)
library(DT)


# Simple header -----------------------------------------------------------

header <- dashboardHeader(title="Economencongres")

# Sidebar --------------------------------------------------------------

sidebar <- ## Sidebar content
  dashboardSidebar(
    sidebarMenu(
      menuItem(
        "Programma 2015",
        tabName = "Programma",
        icon = icon("info-circle")
      ),
      menuItem(
        "Deelnemers",
        tabName = "Deelnemers",
        icon = icon("users")
      ),
      menuItem(
        "Notulen",
        tabName = "Notulen",
        icon = icon("file-text")
      ),
      menuItem(
        "Presentaties",
        tabName = "Presentaties",
        icon = icon("file-movie-o")
      )
    )
  )

# Compose dashboard body --------------------------------------------------

body <- dashboardBody(
  tabItems(
    # First tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Programma",
      fluidRow(
        tabBox(
          width = 12,
          title = "",
          id = "tabset1", height = "250px",
          tabPanel(
            "Agenda",
            h2(""),
            width = 12,
            h2("Agenda d.d. 25-03-2015"),
            includeHTML("Agenda.html")
          ),
          tabPanel(
            "Presentatie ABN AMRO",
            h2("Danny van Brummelen"),
            tags$iframe(
            width="800",
            height="600",
            seamless="seamless",
            src="http://www.allmoocs.nl/wordpress/wp-content/uploads/2015/05/ABN.pdf"
            )
          ),
          tabPanel(
            "Presentatie HAN BKMER",
            h2("Witek ten Hove"),
            h4("Klik op de presentatie en navigeer met de pijlen op het toetsenbord"),
            tags$iframe(
            width="1000",
            height="800",
            seamless="seamless",
            src="http://witusj.github.io/Economencongres/economen25032015.html"
            )
          )
        ) # End of tabBox
      ) # End of fluidRow
    ), # End of tabItem

    # Second tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Deelnemers",
      fluidRow(
        tabBox(
          width = 12,
          title = "",
          id = "tabset2", height = "250px",
          tabPanel("Kaart",
                   h2(""),
                   tags$iframe(
                     width="800",
                     height="600",
                     seamless="seamless",
                     src="http://www.allmoocs.nl/wordpress/wp-content/uploads/2015/05/map.html"
                   )
          ),
          tabPanel("Lijst",
                   DT::dataTableOutput('deeln')
          )
        ) # End of tabBox
      ) # End of fluidRow,
    ), # End of tabItem

    # Third tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Notulen",
      fluidRow(
        box(
          h2(""),
          width = 12,
          includeMarkdown("txt10.md")
        ),
        box(
          h2(""),
          width = 12,
          includeMarkdown("txt11.md")
        ),
        box(
          h2(""),
          width = 12,
          includeMarkdown("txt12.md")
        )
      ) # End of fluidRow
    ), # End of tabItem

    # Fourth tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Presentaties",
      fluidRow(
        box(
          h2("Hello")
        )
      ) # End of fluidRow
    ) # End of tabItem
  ) ## End tabItems
) ## End dashboardBody




# Setup Shiny app UI components -------------------------------------------

ui <- dashboardPage(header, sidebar, body, skin = "purple")

# Setup Shiny app back-end components -------------------------------------

server <- function(input, output) {

  source('map.R')
  output$deeln <- DT::renderDataTable({
    DT::datatable(ec[,c(2:8)])

 })
}


# Render Shiny app --------------------------------------------------------

shinyApp(ui, server)

一定是我的无知,但这让我疯了!

更新:我稍微清理了一下代码,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

我解决了!问题似乎是由.md文件引起的。我不知道为什么但是它们会阻止tabItem的关闭。但奇怪的是它首先似乎在RStudio环境中工作,现在却没有。但是在我的AWS Shiny Server上部署后,一切看起来都不错。奇怪的事情发生在这里!

library(shiny)
library(shinydashboard)
library(markdown)
library(DT)


# Simple header -----------------------------------------------------------

header <- dashboardHeader(title="Economencongres")

# Sidebar --------------------------------------------------------------

sidebar <- ## Sidebar content
  dashboardSidebar(
    sidebarMenu(
      menuItem(
        "Programma 2015",
        tabName = "Programma",
        icon = icon("info-circle")
      ),
      menuItem(
        "Deelnemers",
        tabName = "Deelnemers",
        icon = icon("users")
      ),
      menuItem(
        "Notulen",
        tabName = "Notulen",
        icon = icon("file-text")
      ),
      menuItem(
        "Presentaties",
        tabName = "Presentaties",
        icon = icon("file-movie-o")
      )
    )
  )

# Compose dashboard body --------------------------------------------------

body <- dashboardBody(
  tabItems(

    # First tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Programma",
      fluidRow(
        box(
          width = 12,
          h2("Agenda d.d. 25-03-2015"),
          includeHTML("Agenda.html")
        ) 
      ) # End of fluidRow
    ), # End of tabItem

    # Second tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Deelnemers",
      fluidRow(
        tabBox(
          width = 12,
          title = "",
          id = "tabset2", height = "250px",
          tabPanel("Kaart",
                   h2(""),
                   tags$iframe(
                     width="800",
                     height="600",
                     seamless="seamless",
                     src="http://www.allmoocs.nl/wordpress/wp-content/uploads/2015/05/map.html"
                   )
          ),
          tabPanel("Lijst",
                   DT::dataTableOutput('deeln')
          )
        ) # End of tabBox
      ) # End of fluidRow,
    ), # End of tabItem

    # Third tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Notulen",
      fluidRow(
        box(
          h2(""),
          width = 12,
          includeMarkdown("txt10.md")
        ),
        box(
          h2(""),
          width = 12,
          includeMarkdown("txt11.md")
        ),
        box(
          h2(""),
          width = 12,
          includeMarkdown("txt12.md")
        )
      ) # End of fluidRow
    ), # End of tabItem

    # Fourth tab content
    # Boxes need to be put in a row (or column)
    tabItem(
      tabName = "Presentaties",
      fluidRow(
        tabBox(
          width = 12,
          title = "",
          id = "tabset1",
          height = "250px",
          tabPanel(
              "Presentatie ABN AMRO",
              h2("Danny van Brummelen"),
              box(
              tags$iframe(
                width="800",
                height="600",
                seamless="seamless",
                src="http://www.allmoocs.nl/wordpress/wp-content/uploads/2015/05/ABN.pdf"
              )
            )
          ),
          tabPanel(
              "Presentatie HAN BKMER",
              h2("Witek ten Hove"),
              h4("Klik op de presentatie en navigeer met de pijlen op het toetsenbord"),
              box(
              tags$iframe(
                width="1000",
                height="800",
                seamless="seamless",
                src="http://witusj.github.io/Economencongres/economen25032015.html"
              )
            )
          )
        ) # End of tabBox
      ) # End of fluidRow
    ) # End of tabItem
  ) ## End tabItems
) ## End dashboardBody




# Setup Shiny app UI components -------------------------------------------

ui <- dashboardPage(header, sidebar, body, skin = "purple")

# Setup Shiny app back-end components -------------------------------------

server <- function(input, output) {

  source('map.R')
  output$deeln <- DT::renderDataTable({
    DT::datatable(ec[,c(2:8)])

  })
}


# Render Shiny app --------------------------------------------------------

shinyApp(ui, server