闪亮的conditionalPanel显示所有选项卡上的所有条件

时间:2017-04-03 19:34:06

标签: r shiny

我是Shiny的新手,我有这个代码。我创建了3个tabPanel。当我运行Shiny App时 - 它显示了所有选项卡中的所有条件。根据我选择的选项卡,它应该只显示已满足条件的项目。我已经像其他人建议的那样更改了项目的不同名称,但似乎仍然无法实现。

任何帮助都非常感谢。

ui <- fluidPage(

  sidebarLayout(

    sidebarPanel(

      conditionalPanel(
        condition="input.tabselected=='AAA'",
        selectInput("selectDisease1", 
                   label="Select Disease:", 
                   choices=c("Disease 1","Disease 2") 
                   ),

        selectInput("selectProduct1", 
                   label="Select Products:", 
                   choices=product.list, 
                   selected=NULL, 
                   multiple=TRUE
                   ),

        selectInput("selectStartDate1", 
                   label="Select Start Date:", 
                   choices=names(SBI[c(5:num.columns)]), 
                   selected = 1
                   ), 

        selectInput("selectEndDate1", 
                   label="Select End Date:", 
                   names(SBI[c(5:num.columns)]), 
                   selected = 1
                   ),

        submitButton("Submit")

      ),

      conditionalPanel(
        condition="input.tabs=='Data'",
        selectInput("selectDisease2", 
                    label="Select Disease:", 
                    choices=c("Disease 1","Disease 2")  
        ),

        selectInput("selectProduct2", 
                    label="Select Products:", 
                    choices=product.list, 
                    selected=NULL, 
                    multiple=TRUE
        ),

        selectInput("selectStartDate2", 
                    label="Select Start Date:", 
                    choices=names(SBI[c(5:num.columns)]), 
                    selected = 1
        ), 

        selectInput("selectEndDate2", 
                    label="Select End Date:", 
                    names(SBI[c(5:num.columns)]), 
                    selected = 1
        ),

        numericInput("lines2", 
                     label="Number of Lines:", 
                     value=1
        ),

        dateRangeInput('dateRange2',
                       label = paste('Date range input 1:'),
                       separator = " - ", 
                       format = "yyyy-mm",
                       startview = 'month'
        ),

        submitButton("Submit")

      ),

      conditionalPanel(
        condition="input.tabs=='Plot'",
        selectInput("selectDisease3", 
                    label="Select Disease Stage:", 
                    choices=c("Disease Stage 1","Disease Stage 2")  
                    ),

        selectInput("selectProduct3", 
                    label="Select Products:", 
                    choices=product.list, 
                    selected=NULL, 
                    multiple=TRUE
                    ),

        selectInput("selectStartDate3", 
                    label="Select Start Date:", 
                    choices=names(SBI[c(5:num.columns)]), 
                    selected = 1
                    ), 

        selectInput("selectEndDate3", 
                    label="Select End Date:", 
                    names(SBI[c(5:num.columns)]), 
                    selected = 1
                    ),

        numericInput("trends3", 
                     label="Number of Linear Trends:", 
                     value=1
                    ),

        dateRangeInput('dateRange3',
                       label = paste('Date range input 1:'),
                       separator = " - ", 
                       format = "yyyy-mm",
                       startview = 'month'
                      ),
       dateRangeInput('dateRange4',
                       label = paste('Date range input 2:'),
                       separator = " - ", 
                       format = "yyyy-mm",
                       startview = 'month'
                      ),

        submitButton("Submit")

      )      
    ), 

    mainPanel(
      titlePanel("Assessment"),

      tabsetPanel(

        id = "tabselected",
        selected = NULL, 

        tabPanel("AAA Disease State", 
                 value="AAA", 
                 tags$hr(),
                 DT::dataTableOutput("sbirx.view", width = 300)
                 ),
        tabPanel("Data",
                 value="Data",
                 tags$hr(),
                 DT::dataTableOutput("sbirx.view", width = 300)
                ),
        tabPanel("Plot",
                 value="Plot",
                 tags$hr(),
                 DT::dataTableOutput("sbirx.view", width = 300)
                 )

      )

    ) # end of main panel

  ) # end of sidebarLayout

) # end of fluidpage

2 个答案:

答案 0 :(得分:0)

如果面板内有conditionalPanel,则submitButton()无法解决问题(可能是它的意图)。

要修复它,请使用actionButton()

请注意,您必须适当更改服务器代码。

答案 1 :(得分:0)

问题在于渲染数据表,输出应该是唯一的。您只能渲染sbirx.view一次,如果要显示输出3次,则分配sbirx.view2sbirx.view3之类的内容,然后再渲染它。同时删除submitButton并将actionButton分配给每个@GGamba建议

tabsetPanel(

id = "tabselected",

tabPanel("AAA Disease State", 
         value=10, 
         tags$hr()
         #,DT::dataTableOutput("sbirx.view", width = 300)
),
tabPanel("Data",
         value=20,
         tags$hr()
        #,DT::dataTableOutput("sbirx.view", width = 300)
),
tabPanel("Plot",
         value=30,
         tags$hr()
         #,DT::dataTableOutput("sbirx.view", width = 300)
)