2016-06-30 2 views
0

Ich benutze glänzend mit Shinydashboard. Ich habe eine Tabbox mit zwei TabPanels. Dann gibt es eine weitere Box, die entweder textOutput ("a") anzeigen soll, wenn Tab1 in der Tabbox ausgewählt ist oder textOutput ("b"), wenn Tab2 ausgewählt ist.Bedingte Anzeige in Box basierend auf der in shinydashboard ausgewählten Registerkarte

Ich biete ganzen Code für die Reproduzierbarkeit, aber achten Sie auf Kommentare, die zeigen, wo der wichtige Teil ist.

 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" 

      ) 

     } 

Antwort

1

input$tabset1 liefert die ID des aktuell ausgewählten Registerkarte (also entweder Tab1 oder Tab2). Dann können Sie eine if/else-Anweisung verwenden, um abhängig von diesem Rückgabewert den Inhalt zu drucken, den Sie mögen.

+0

Nun habe ich versucht, etwas wie in server.R Ausgabe $ x <-RenderText ({input $ tabset1}) und dann testen in ui.R if (textOutput ("x") == "Tab1") {"a " } else { " b " } Es funktioniert nicht oder Sie wollen es in Server.R testen? –

+1

'if' Logik funktioniert nur auf der Serverseite. –

+0

Ich habe so etwas auf der serverseitigen Ausgabe versucht $ x <-RenderText ({input $ tabset1}) if (Ausgabe $ x == "Tab1") { Ausgabe $ y = renderText (y <- "hahah") } else { Ausgabe $ y = renderText (y <- "bebebe") } aber immer noch nicht funktionieren –

Verwandte Themen