Показать / Скрыть весь контент коробки с RadioButton Shiny - PullRequest
0 голосов
/ 12 октября 2018

У меня есть 3 коробки в корпусе приборной панели.Когда radioButton в выбранном «P3G», должны появиться box1 и box3, т.е. скрыть box2.Когда radiobutton выбрано для «Выбрать файл», должны появиться box2 и box3.У меня есть приведенный ниже код с использованием brightjs, но он не работает должным образом, то есть не скрывает полное содержимое коробки, как указано в observeEventЛюбая помощь?

sidebar <- dashboardSidebar(width=200,
                        sidebarMenu(id="tabs",
                                    menuItem("Input File", tabName = 
"tab1",icon = icon("fas fa-file"))))

body <- tabItem(tabName = "tab1",value="file_nput",h2("Select file"),
            fluidRow(useShinyjs(),
                     radioButtons("file_rd",label= "Chose Dataset:",
                                  choices = list("P3G","Chose File"),selected = "P3G"),
                     box( id ="box1",title = "Default Sample", width = 7, status = "info",
                          tabPanel("Sample Info",value="p3_samples",
                                   DT::dataTableOutput("p3_table"))),

                     box(id= "box2", title = "Uploaded Sample", width = 7, status = "info", 
                         tabsetPanel(id = "sam_tab",
                                     tabPanel("Upload", value="upload_file",
                                              fileInput(inputId ="FILE",label = "Upload file",multiple=FALSE,
                                                        accept = c(".txt")),
                                              checkboxInput('header', label = 'Header', TRUE),
                                              actionButton("createdb","Create DB")),

                                     tabPanel("File Info",value="samples",tableOutput("summary"),icon = icon("info"),
                                              DT::dataTableOutput("full_table"),actionButton("upload","Proceed")))),
                     box(id = "box3" ,status = "info", width = 5,
                         tabBox(id = "infobox", height = "100%", width = "100%",
                                tabPanel("Instructions",h4("Instructions for uploading valid input file"))))))

ui<- shinyUI(dashboardPage(dashboardHeader(title = "TestApp", titleWidth = 150),sidebar,dashboardBody(tabItems(body))))


server <- function(input, output, session) {
     observeEvent(input$file_rd, {
       if (input$file_rd == "P3G") {
         shinyjs::hide(id = "box2", anim=TRUE)
         }else {
           shinyjs::hide(id = "box1",anim=TRUE)
           }
     })
     } 

shinyApp(ui=ui, server=server)

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете просто использовать

conditionalPanel ()

, поэтому условная панель для box1 будет выглядеть следующим образом:

conditionalPanel('input.file_rd === "P3G"', box(id = 'box1', ...)

и для box2 и box3:

conditionalPanel('input.file_rd != "P3G"', box(id = 'box2', ...), box(id = 'box3', ...)
...