У меня блестящее приложение, которое использует conditionalPanel
в зависимости от выбора пользователя от selectInput
, как показано ниже:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
selectInput(
inputId="selectCompany",
label=" Choose Comanpany", selected = NULL,
choices=c("HP", "Nokia", "Samsung", "Erickson")),
uiOutput("ui")
),
conditionalPanel(
"input.selectCompany == 'HP'",
sidebarMenu(id = "sidebarmenu",
menuItem("User", tabName = "userComputer", icon = icon("file-text-o")))),
conditionalPanel(
"input.selectCompany != 'HP'",
sidebarMenu(id = "sidebarmenu",
menuItem("User", tabName = "userPhone", icon = icon("file-text-o"))))),
dashboardBody(
tabItems(
tabItem(tabName = "userComputer",
fluidRow(
column( width=9,
tabBox(
width="100%",
tabPanel("Personal Details"),
tabPanel("Personal data"),
tabPanel("Table")
)))),
tabItem(tabName = "userPhone",
fluidRow(
column( width=9,
tabBox(
width="100%",
tabPanel("Personal Details"),
tabPanel("Personal data")
)))))))
server <- function(input, output) {}
shinyApp(ui, server)
Условное условие не работает автоматически, при этом выбор от "HP"
до "Nokia"
вкладки не изменяются автоматически с 3 на 2 без необходимости щелкать пункт меню «Пользователь».
Я пытался использовать RenderUI
, как показано ниже, с тем же поведением:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
selectInput(
inputId="selectCompany",
label=" Choose Comanpany", selected = NULL,
choices=c("HP", "Nokia", "Samsung", "Erickson")),
uiOutput("ui")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "userComputer",
fluidRow(
column( width=9,
tabBox(
width="100%",
tabPanel("Personal Details"),
tabPanel("Personal data"),
tabPanel("Table")
)))),
tabItem(tabName = "userPhone",
fluidRow(
column( width=9,
tabBox(
width="100%",
tabPanel("Personal Details"),
tabPanel("Personal data")
)))))))
server <- function(input, output) {
output$ui <- renderUI({
if( input$selectCompany == "Nokia" | input$selectCompany == "Samsung" |input$selectCompany == "Erickson"){
sidebarMenu(
menuItem("User", tabName = "userPhone", icon = icon("file-text-o")))
}else{
sidebarMenu(
menuItem("User", tabName = "userComputer", icon = icon("file-text-o")))
}
})
}
shinyApp(ui, server)
Я также пытался использовать метод ObserveEvent
, но результат тот же, есть ли способ, которым я могу отображать различные элементы вкладки автоматически в зависимости от выбора из selectInput
, не нажимая на пункт меню?