Fen*_*hen 2 r sidebar menubar shiny shinydashboard
我正在学习闪亮和闪亮的仪表板。我的代码是这样的:
library(shiny)
library(shinydashboard)
library(DT)
library(RODBC)
library(stringr)
library(dplyr)
ch<-odbcConnect('B1P HANA',uid='fchen4',pwd='XUEqin0312')
sidebar <- dashboardSidebar(
sidebarMenu(
menuItem("Query1",tabName="Query1",icon=icon("table"),
numericInput('Start1','Start Date',19800312,min=20170101,max=20200101),
numericInput('End1','End Date',19800312,min=20170101,max=20200101),
textInput('Office1','Office ID','0'),
submitButton("Submit")),
menuItem("Query2",tabName="Query2",icon=icon("table"),
numericInput('Start2','Start Date',20180101,min=20170101,max=20200101),
numericInput('End2','End Date',20180101,min=20170101,max=20200101),
textInput('Office2','Office ID','0'),
submitButton("Submit"))
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName="Query1",h2("Dashboard tab content")),
tabItem(tabName = "Query2",h2("Widgets tab content"))
)
)
ui <- dashboardPage(
dashboardHeader(title = 'LOSS PREVENTION'),
sidebar,
body
)
server <- function(input, output) {
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
仪表板看起来像这样:
可以看到,当我在侧边栏中放置一些输入框时,文本无法显示在主要部分。
但是,当我的代码是这样的:
library(shiny)
library(shinydashboard)
library(DT)
library(RODBC)
library(stringr)
library(dplyr)
ch<-odbcConnect('B1P HANA',uid='fchen4',pwd='XUEqin0312')
sidebar <- dashboardSidebar(
sidebarMenu(
menuItem("Query1",tabName="Query1",icon=icon("table")),
menuItem("Query2",tabName="Query2",icon=icon("table"))
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName="Query1",h2("Dashboard tab content")),
tabItem(tabName = "Query2",h2("Widgets tab content"))
)
)
ui <- dashboardPage(
dashboardHeader(title = 'LOSS PREVENTION'),
sidebar,
body
)
server <- function(input, output) {
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
然后结果是这样的:
您可以看到现在侧栏中没有输入,然后主栏中现在有文本。这太奇怪了。
这在shinydashboard
当前实际上是一件很烦人的事情。有提供了一些解决方法解决方案在这里由温斯顿张,但在我看来,最好的办法就是这个:
基本上发生的情况是,当您将其他输入元素插入 a 时menuItem
,它会丢失data-toggle
和data-value
属性。因此,tabItem
s indashboardBody
无法再与menuItem
s链接,因此应用程序无法在正文中显示内容。
您可以使用自定义函数 ( convertMenuItem
) 进行手动设置data-toggle
,data-value
以便menuItem
s 和tabItem
s 再次链接。
library(shiny)
library(shinydashboard)
convertMenuItem <- function(mi,tabName) {
mi$children[[1]]$attribs['data-toggle']="tab"
mi$children[[1]]$attribs['data-value'] = tabName
mi
}
sidebar <- dashboardSidebar(
sidebarMenu(
convertMenuItem(menuItem("Query1",tabName="Query1",icon=icon("table"),
numericInput('Start1','Start Date',19800312,min=20170101,max=20200101),
numericInput('End1','End Date',19800312,min=20170101,max=20200101),
textInput('Office1','Office ID','0'),
submitButton("Submit")), tabName = "Query1"),
convertMenuItem(menuItem("Query2",tabName="Query2",icon=icon("table"),
numericInput('Start2','Start Date',20180101,min=20170101,max=20200101),
numericInput('End2','End Date',20180101,min=20170101,max=20200101),
textInput('Office2','Office ID','0'),
submitButton("Submit")), tabName = "Query2")
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName="Query1", h2("Dashboard tab content")),
tabItem(tabName = "Query2", h2("Widgets tab content"))
)
)
ui <- dashboardPage(
dashboardHeader(title = 'LOSS PREVENTION'),
sidebar,
body
)
server <- function(input, output) {}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)