2017-05-28 8 views
0

私はテンプレートの下の行にShinyappを作成しています:sliderInputタブが選択されている場合にのみ、サイドバーに表示する

library(shinydashboard) 

sidebar <- dashboardSidebar(
    sidebarMenu(id="tabs", 
       menuItem("Tab1", tabName="Tab1", selected=TRUE), 
       menuItem("Tab2", tabName = "Tab2") 
), 

    conditionalPanel("input.tabs=='Tab1'", 
        fluidRow() 
        ), 
    conditionalPanel("input.tabs=='Tab2'", 
        fluidRow() 
        ) 
) 


body <- dashboardBody(
    tabItems(

    tabItem(tabName = "Tab1", 
      fluidRow(sliderInput("aa", "aa", value = 0.9, min = 0, max = 2, step=0.1)) 
    ), 
    tabItem(tabName = "Tab2", 
      fluidRow(navbarPage(id = 'ab', title = "", 
         tabPanel(title = "aa1", value = 'aa1', fluidRow()), 
         tabPanel(title = "aa2", value = 'aa2', fluidRow()))) 
    ))) 


ui = dashboardPage(
    dashboardHeader(title = "My tab"), 
    sidebar, 
    body 
) 

server = function(input, output) {} 

shinyApp(ui = ui, server = server) 

は今、私は基本的に何をしたい、sliderInputはサイドパネルに表示されます場合にのみ、 TabPanel = 'aa2'からtabItem = 'Tab2'まで。したがって、TabPanel = 'aa1'が選択されている場合は、sliderInputは表示されません。

これまでのところ、私は以下のような何か試してみました:これでしかし

sidebar <- dashboardSidebar(
    sidebarMenu(id="tabs", 
       menuItem("Tab1", tabName="Tab1", selected=TRUE), 
       menuItem("Tab2", tabName = "Tab2") 
), 

    conditionalPanel("input.tabs=='Tab1'", 
        fluidRow() 
        ), 
    conditionalPanel("input.tabs=='Tab2'", 
        fluidRow(sliderInput("aa5", "aa", value = 0.9, min = 0, max = 2, step=0.1)) 
        ) 
) 

をsliderInputは、私はしたくないの両方tabPanel = "aa1" & tabPanel = "aa2"、することも可能です。

私はsliderInputをどのようにして作ることができますか?tabPanel = "aa2"の場合のみ表示されます。

あなたのポインタをありがとう。

+0

'shinyjs'パッケージから' hide'関数を使ってみることができます。これはサーバー側から行われます。 [this](http://deanattali.com/shinyjs/overview#demo)リンクをたどることができます。 – SBista

答えて

0

ポインタ@SBistaありがとうございます。以下は更新されたコードです。ありがとう、

library(shinydashboard) 
library(shinyjs) 

sidebar <- dashboardSidebar(
    sidebarMenu(id="tabs", 
       menuItem("Tab1", tabName="Tab1", selected=TRUE), 
       menuItem("Tab2", tabName = "Tab2") 
), 

    conditionalPanel("input.tabs=='Tab1'", 
        fluidRow() 
        ), 
    conditionalPanel("input.tabs=='Tab2'", 
        fluidRow(useShinyjs(), 
        column(12, sliderInput("aa4", "aa", value = 0.9, min = 0, max = 2, step=0.1))) 
        ) 
) 


body <- dashboardBody(
    tabItems(

    tabItem(tabName = "Tab1", 
      fluidRow(sliderInput("aa", "aa", value = 0.9, min = 0, max = 2, step=0.1)) 
    ), 
    tabItem(tabName = "Tab2", 
      fluidRow(navbarPage(id = 'ab', title = "", 
         tabPanel(title = "aa1", value = 'aa1', fluidRow()), 
         tabPanel(title = "aa2", value = 'aa2', fluidRow()))) 
    ))) 


ui = dashboardPage(
    dashboardHeader(title = "My tab"), 
    sidebar, 
    body 
) 

server = function(input, output) { 

observe(toggle(id = "aa4", condition = ifelse(input$ab == 'aa2', TRUE, FALSE))) 

} 

shinyApp(ui = ui, server = server) 
関連する問題