0
votes

I use shiny with shinydashboard. I have one tabbox with two tabPanels. Then there is another box which should display either textOutput("a") if tab1 in tabbox is selected or textOutput("b") if tab2 is selected.

I provide whole code for reproducibility but watch out for comments which show where the important part is.

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  skin = "red",
  dashboardHeader(title = "lalala", titleWidth = 450),
  sidebar <- dashboardSidebar(width = 400,
                              sidebarMenu(
                                menuItem(
                                  text = strong("First tab"),
                                  tabName = "first",
                                  icon = icon("dashboard")
                                )
                              )),
  body <- dashboardBody(fluidRow(
    tabBox(
      title = "First tabBox",          
      id = "tabset1",
      height = "250px",
      ############## based on which of this tab is selected
      tabPanel("Tab1", "First tab content"),
      tabPanel("Tab2", "Tab content 2")
    ),
    box(
      title = "Selection criteria for chart",
      height = "700px",
      width = 4,
      solidHeader = TRUE,
      status = "danger",
      ############## I want in this box to display either textouput "a" or "b"
      textOutput("a")

    )
  ))
)

server <- function(input, output) {
  output$a <- renderText(a <- "ahoj")
  output$b <- renderText(b <- "cau")
}
1

1 Answers

1
votes

input$tabset1 returns the id of the currently selected tab (so either Tab1 or Tab2). Then you can use an if/else statement to print the content you like depending on this return value.