Вкладка ShinydashboarsItem не работает должным образом
Я тестирую пакет shinydashboard и просто не могу понять, что происходит в конкретном случае. У моей панели инструментов есть 4 tabItems (извините, это на голландском):
- Programma
- Deelnemers
- Notulen
- Overige
Панель инструментов загружается правильно, но содержимое tabItem 4 ("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 ответ
Я решил это! Кажется, проблема вызвана файлами.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
)