Fluid rows in r

184 views Asked by At
library(shiny)
    library(shinyBS)
    #library(shinydashboard)
    shinyUI(fluidPage(
       selectInput(inputId = "select1", label = "Select Id", choices = c(1,2,3) ),
        textOutput(outputId = 'out'),


       id1 <- 'active',
      titlePanel("Testing 3"),
      fluidRow(
        column(4,bsButton("Save", "Save",size="medium", type="action"), offset=6,style='width:150px;height:80px;'),
        column(2,bsButton("Edit", "Edit", size="medium", type="action")),
        fluidRow(),
        fluidRow(
          column(2,h4("xyz"), offset=1),
                 column(1, bsButton("deadYes", "yes", size="medium",type="toggle")),
                        column(1, bsButton("deadNo", "no", size="medium",type="toggle", value = TRUE)))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4(" Boxes"), offset=3)),
        column(2, conditionalPanel(condition = "input.deadNo", bsButton("deep0", "0", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("deep1", "1", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("deep2", "2", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("deep3", "3", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("deep4", "4", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("deep5", "5", size="medium",type="toggle",class=id1)))
        ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("Medium Boxes"), offset=3)),
        column(2, conditionalPanel(condition = "input.deadNo",bsButton("med0", "0", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("med1", "1", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("med2", "2", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("med3", "3", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("med4", "4", size="medium",type="toggle", class=id1))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("med5", "5", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("bees in Deeps"), offset=3)),
        column(1, conditionalPanel(condition = "input.deadNo",numericInput('frameDeep', '',0))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD10", "10",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD20", "20",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD30", "30",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD1", "1",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD2", "2",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD3", "3",size="medium", type="action"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("frameD4", "4",size="medium", type="action", class="active"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD5", "5",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD6", "6",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD7", "7",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD8", "8",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameD9", "9",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameDClear", "Clear",size="medium", type="action")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("bees in Mediums"), offset=3)),
        column(1, conditionalPanel(condition = "input.deadNo",numericInput('frameMedium', '',0))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM10", "10",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM20", "20",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM30", "30",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM1", "1",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM2", "2",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM3", "3",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM4", "4",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM5", "5",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM6", "6",size="medium", type="action", class='active'))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM7", "7",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM8", "8",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameM9", "9",size="medium", type="action"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("frameMClear", "Clear",size="medium", type="action")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("Queen Status"), offset=3)),
        column(2, conditionalPanel(condition = "input.deadNo",bsButton("queenStatusQR", "QR", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("queenStatusQRC", "QRC", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("queenStatusQLC", "QLC", size="medium",type="toggle", class="active"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("queenStatusPQ", "PQ", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("queenStatusQL", "QL", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("seen"), offset=3)),
        column(2, conditionalPanel(condition = "input.deadNo",bsButton("queenSeenYes", "Yes", size="medium",type="toggle", class='active'))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("queenSeenNo", "No", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("E seen"), offset=3)),
        column(2,conditionalPanel(condition = "input.deadNo", bsButton("eggsSeenYes", "Yes", size="medium",type="toggle", class='active'))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("eggsSeenNo", "No", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("brood pattern"), offset=3)),
        column(3, conditionalPanel(condition = "input.deadNo",bsButton("openBroodNone", "none", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("openBroodWeak", "weak", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("openBroodFair", "fair", size="medium",type="toggle", class="active"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("openBroodStrong", "strong", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("openBroodOutstanding", "outstanding", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("Capped brood pattern"), offset=3)),
        column(3,conditionalPanel(condition = "input.deadNo", bsButton("cappedBroodNone", "none", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("cappedBroodWeak", "weak", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("cappedBroodFair", "fair", size="medium",type="toggle", class='active'))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("cappedBroodStrong", "strong", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("cappedBroodOutstanding", "outstanding", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("brood disease"), offset=3)),
        column(2,conditionalPanel(condition = "input.deadNo", bsButton("broodDiseaseNone", "none", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("broodDiseaseMild", "mild", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("broodDiseaseMod", "mod", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("broodDiseaseSevere", "severe", size="medium",type="toggle", class='active'))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.broodDiseaseNone)", bsButton("broodDiseaseSnotty", "snotty", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.broodDiseaseNone)", bsButton("broodDiseaseFoul", "foul", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.broodDiseaseNone)", bsButton("broodDiseaseDryChalk", "Dry chalk", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.broodDiseaseNone)", bsButton("broodDiseaseYellow", "Yellow", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.broodDiseaseNone)", bsButton("broodDiseaseOther", "Other", size="medium",type="toggle")))
      ), br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("Prevalence of adult disease"), offset=3)),
        column(2, conditionalPanel(condition = "input.deadNo",bsButton("adultDiseaseNone", "none", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("adultDiseaseMild", "mild", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo",bsButton("adultDiseaseMod", "mod", size="medium",type="toggle", class="active"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("adultDiseaseSevere", "severe", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo && !(input.adultDiseaseNone)",bsButton("adultDiseaseDefWing", "Def Wing", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.adultDiseaseNone)", bsButton("adultDiseaseKwing", "Kwing", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo && !(input.adultDiseaseNone)",bsButton("adultDiseaseJittery", "jittery", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.adultDiseaseNone)", bsButton("adultDiseaseParalysis", "paralysis", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.adultDiseaseNone)", bsButton("adultDiseasePoop", "poop", size="medium",type="toggle"))),
        column(1, conditionalPanel(condition = "input.deadNo && !(input.adultDiseaseNone)",bsButton("adultDiseaseOther", "other", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("Prevalence of 2ndary pests"), offset=3)),
        column(2,conditionalPanel(condition = "input.deadNo", bsButton("secondaryPestsNone", "none", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("secondaryPestsMild", "mild", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("secondaryPestsMod", "mod", size="medium",type="toggle", class="active"))),
        column(1,conditionalPanel(condition = "input.deadNo", bsButton("secondaryPestsSevere", "severe", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.secondaryPestsNone)", bsButton("secondaryPestsWaxMoth", "Wax moth", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.secondaryPestsNone)", bsButton("secondaryPestsHiveBeetle", "Hive Beetle", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.secondaryPestsNone)", bsButton("secondaryPestsVarroa", "Varroa", size="medium",type="toggle"))),
        column(1,conditionalPanel(condition = "input.deadNo && !(input.secondaryPestsNone)", bsButton("secondaryPestsOther", "other", size="medium",type="toggle")))
      ),br(),

      fluidRow(
        column(2,conditionalPanel(condition = "input.deadNo",h4("Remarks"), offset=3)),
        column(8,conditionalPanel(condition = "input.deadNo",tags$textarea(id="Remarks",rows=1,cols=80, "")))
      )
    ))
server.r :- 
    library(shiny)

shinyServer(function(input, output, session) {

  n=1

  output$out <- renderText(
   if (input$select1==3) {
     print(input$select1)
      # n="active"
   }else {
     print(input$select1)
     # n="active"
   }
  )

})

I want to dynamically select button in all fluid rows when we change values in selectInput. Suppose if the value in select input is 2 then instead of "deep5" button "deep2" button(or some other button) should be selected.

1

There are 1 answers

1
Mike Wise On BEST ANSWER

You will need to use renderUI to render the bsButton to accomplish that, which will require some code restructuring since the bsButton instances have to move to the shinyServer function. I did a little piece like this to show you how this would work.

library(shiny)
library(shinyBS)

u <- shinyUI(fluidPage(
       selectInput(inputId = "select1",label = "Select Id",choices = c(1,2,3,4)),
        textOutput(outputId = 'out'),


       id1 <- 'active',
      titlePanel("Testing 3"),
      fluidRow(
        column(4,bsButton("Save","Save",size = "medium",type = "action"),offset = 6,style = 'width:150px;height:80px;'),
        column(2,bsButton("Edit","Edit",size = "medium",type = "action")),
        fluidRow(),
        fluidRow(
          column(2,h4("xyz"),offset = 1),
                 column(1,bsButton("deadYes","yes",size = "medium",type = "toggle")),
                        column(1,bsButton("deadNo","no",size = "medium",type = "toggle",value = TRUE)))
      ),br(),
      fluidRow(
      column(2,conditionalPanel(condition = "input.deadNo",h4(" Boxes"),offset = 3)),
      column(2,conditionalPanel(condition = "input.deadNo",uiOutput("deep0")) ),
      column(1,conditionalPanel(condition = "input.deadNo",uiOutput("deep1"))),
      column(1,conditionalPanel(condition = "input.deadNo",uiOutput("deep2"))),
      column(1,conditionalPanel(condition = "input.deadNo",uiOutput("deep3"))),
      column(1,conditionalPanel(condition = "input.deadNo",uiOutput("deep4"))),
      column(1,conditionalPanel(condition = "input.deadNo",uiOutput("deep5")))
      ),br()
      )
)

s <- shinyServer(function(input,output,session) {

  act0 <- reactive({ ifelse (input$select1 == 0,"active","" ) })
  act1 <- reactive({ ifelse (input$select1 == 1,"active","" ) })
  act2 <- reactive({ ifelse (input$select1 == 2,"active","" ) })
  act3 <- reactive({ ifelse (input$select1 == 3,"active","" ) })
  act4 <- reactive({ ifelse (input$select1 == 4,"active","" ) })
  output$deep0 = renderUI({ bsButton("deep0","0",size = "medium",type = "toggle",class = act0()) })
  output$deep1 = renderUI({ bsButton("deep1","1",size = "medium",type = "toggle",class = act1()) })
  output$deep2 = renderUI({ bsButton("deep2","2",size = "medium",type = "toggle",class = act2()) })
  output$deep3 = renderUI({ bsButton("deep3","3",size = "medium",type = "toggle",class = act3()) })
  output$deep4 = renderUI({ bsButton("deep4","4",size = "medium",type = "toggle",class = act4()) })
} )
shinyApp(ui = u,server = s)

yielding:

enter image description here