简体   繁体   中英

Shiny Dashboard - Change Dashboard Body Based on Selected Tab

right now when the user runs the app, the desired website/dashboard body is displayed, however, I want the desired website/body to display ONLY when the user selects "Control Chart" from "Tab 1" in the sidebar menu. This is because I will have multiple sidebar tabs, when depending on the website the user selects, the embedded website should automatically change. When the user initially runs the app, the dashboard body should be blank. Only when they select Tab 1 -> Cell Culture -> Control Chart should they see the google homepage. Please help!

    ui <-
    dashboardPage(
        skin = "black",
        dashboardHeader(title = "Dashboard ", titleWidth = 450),
        dashboardSidebar(sidebarMenu(
            menuItem(
                "Tab 1",
                tabName = "tab 1",
                icon = icon("medicine"),
                menuItem("Cell Culture",
                         menuItem("Control Chart"))
            )
        )),
        
        dashboardBody(mainPanel(fluidRow(htmlOutput("frame"))
        ),
        
        ))

server = function(input, output, session) {
    observe({
        test <<- paste0("https://google.com") #sample url
    })
    output$frame <- renderUI({
        input$Member
        my_test <- tags$iframe(src = test,
                               height = 800,
                               width = 800)
        print(my_test)
        my_test
    })
}
shinyApp(ui, server)

You can define a blank tab as the first menuItem , and then you should be able to select the appropriate menuItem to display the desired objects. Also, you should define tabName to ensure that the appropriate objects are displayed and tie it to them in dashboardBody as shown below. Try this

ui <-
  dashboardPage(
    skin = "black",
    dashboardHeader(title = "Dashboard ", titleWidth = 450),
    dashboardSidebar(sidebarMenu(
      menuItem("",tabName="home"),
      menuItem(
        "Tab 1",
        tabName = "tab 1",
        icon = icon("medicine"),
        menuItem("Cell Culture",
                 menuItem("Control Chart", tabName = "mytab"))
      )
    )),
    
    dashboardBody(mainPanel(
      tabItems(
        tabItem(tabName = "home"),
        tabItem(tabName = "mytab",
                fluidRow(plotOutput("plot1"), htmlOutput("frame"))
        )
      )
      
    ),
    
    ))

server = function(input, output, session) {
  #observe({
  #  test <- paste0("https://google.com") #sample url
  #})
  output$plot1 <- renderPlot(plot(cars))
  url <- a("Google Homepage", href="https://www.google.com/")
  output$frame <- renderUI({
    #input$Member
    my_test <- tags$iframe(href = url,
                           height = 800,
                           width = 800)
    print(my_test)
    print("Hello!")
    my_test
  })
}
shinyApp(ui, server)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM