Нужно выровнять флажки по горизонтали в корпусе приборной панели? - PullRequest
1 голос
/ 23 марта 2019

Я хочу показать некоторые флажки, основанные на вводе переключателей на корпусе приборной панели shinydashboard. Однако я могу это сделать, но эти флажки не выровнены по горизонтали. Я хочу сделать матрицу из этих флажков, так как три столбца и несколько строк также хотят выровнять их по правой стороне тела, а не по центру.

Есть ли способ достичь этого? Постскриптум - Я пытался использовать checkboxgroup, но я не могу установить идентификаторы для отдельных флажков.

Ниже приведен код:

library(shiny)
library(shinyjs)
library(shinydashboard)
Scenario <- c("Personal Information", "Academic Information")
shinyApp(
ui = dashboardPage(title = "My Page",  
                 dashboardHeader(
                   title = "My Header",
                   titleWidth = 200
                 ),
                 dashboardSidebar(
                   width = 200,
                   sidebarMenu(
                     menuItem("My Data", selected = FALSE, 
                              menuSubItem(text = "My Data", tabName = 
   "my_data", newtab = TRUE, selected = FALSE)
                     )
                   )
                 ),
                 dashboardBody(
                   tabItems(
                     # First tab content
                     tabItem(tabName = "my_data",
                             h2("Please select fields"),
                             fluidRow(column(12,radioButtons('rbscenario', 
   NULL, Scenario, inline=TRUE))),
                             uiOutput('checkboxes',inline = TRUE)
                     ) 
                   ))),
 server = function(input, output){
 observe({
  input$absubmit
  if(input$rbscenario == "Personal Information"){
    output$checkboxes <- renderUI({
      dashboardBody(fluidRow(column(6,
                                    checkboxInput('CB_FN', 'First Name', value = FALSE),
                                    checkboxInput('CB_MN', 'Middle Name', value = FALSE),
                                    checkboxInput('CB_LN', 'Last Name', value = FALSE),
                                    checkboxInput('CB_DOB', 'Date of Birth', value = FALSE),
                                    checkboxInput('CB_GN', 'Gender', value = FALSE),
                                    checkboxInput('CB_CT', 'City', value = FALSE))),
                    actionButton('abSubmit',"Submit", icon = NULL)
      )})}
  else if(input$rbscenario == "Academic Information"){
    output$checkboxes <- renderUI({
      dashboardBody(fluidPage(
        fluidRow(column(12,
                        checkboxInput('CB_SC', 'School', value = FALSE, width = NULL),
                        checkboxInput('CB_CL', 'College', value = FALSE, width = NULL),
                        checkboxInput('CB_POS', 'Primary OS', value = FALSE, width = NULL),
                        checkboxInput('CB_PLN', 'Primary Programming Language', value = FALSE, width = NULL),
                        checkboxInput('CB_PDB', 'Database', value = FALSE, width = NULL),
                        checkboxInput('CB_NT', 'Networking', value = FALSE, width = NULL))),
        actionButton('abSubmit2',"Submit", icon = NULL)
      ))})}
  })
  })

This is the output I am getting

1 Ответ

3 голосов
/ 24 марта 2019

Проблема заключалась в том, что dashboardBody() использовался в неправильном месте, создавая большое левое поле. Строки и столбцы создаются вручную.

Я заменил эту часть вашего кода

  dashboardBody(fluidRow(column(6,
                                checkboxInput('CB_FN', 'First Name', value = FALSE),
                                checkboxInput('CB_MN', 'Middle Name', value = FALSE),
                                checkboxInput('CB_LN', 'Last Name', value = FALSE),
                                checkboxInput('CB_DOB', 'Date of Birth', value = FALSE),
                                checkboxInput('CB_GN', 'Gender', value = FALSE),
                                checkboxInput('CB_CT', 'City', value = FALSE))),
                actionButton('abSubmit',"Submit", icon = NULL)
  )

с

div(
  fluidRow(
    column(4,
           checkboxInput('CB_FN', 'First Name', value = FALSE),
           checkboxInput('CB_MN', 'Middle Name', value = FALSE)),
    column(4,
           checkboxInput('CB_LN', 'Last Name', value = FALSE),
           checkboxInput('CB_DOB', 'Date of Birth', value = FALSE)),
    column(4,
           ceckboxInput('CB_GN', 'Gender', value = FALSE),
           checkboxInput('CB_CT', 'City', value = FALSE))
  ),
actionButton('abSubmit',"Submit", icon = NULL)
)

чтобы получить это

enter image description here

Точно так же вы должны также заменить dashboardBody() на div() при втором условии if (Academic Information).

...