选择用于每一checkboxGroupInputř闪亮条件dateInput

问题描述 投票:0回答:1

我创建一个应用程序,允许用户多选的项目清单。对于每个选定的项目,我想有一个dateInput字段出现的项目名称(即,A / B / C)的旁边。

目前,我可以显示dateInput字段的项目中的任何一个,但不是多个(如下所示)

One dateInput field for one selected project

一旦多dateInputs项目列表旁边显示如下图所示:我不知道dateInput领域如何能很好地排队,因为他们似乎占用更多的空间比复选框列表,如下所示:

enter image description here

ui <-  dashboardPage(
  dashboardHeader(
    title = ""
  ),

  dashboardSidebar(
    sidebarMenu(
      menuItem("Projects", tabName = "tab1")
    ) 
  ),

  dashboardBody(
    tabItems(
      tabItem(tabName = "tab1",
              fluidRow(h2("Projects"), 
                column(6,
                       checkboxGroupInput("Projects", "",
                                          c("a", "b", "c")
                       )
                ),
                column(4,
                       conditionalPanel(condition = "input.Projects == 'a' || 
                                        input.Projects == 'b' || input.Projects 
                                        == 'c'", dateInput("proj_date", ""))
                       )
                )
              )
      )
    )
  )

server <- function(input, output) {
}


shinyApp(ui, server)

我明白我需要把在JavaScript中的conditionalPanel的病情说法。请指教我应该如何正确的代码,并有任何及所有选定的项目显示一个或多个dateInput领域。

r shiny conditional
1个回答
1
投票

尝试uiOutput

library(shiny)
library(shinydashboard)

ui <-  dashboardPage(
    dashboardHeader(),
    dashboardSidebar(
        sidebarMenu(
            menuItem("Projects", tabName = "tab1")
        ) 
    ),
    dashboardBody(
        tabItems(
            tabItem(tabName = "tab1",
                    fluidRow(h2("Projects"), 
                             column(6, checkboxGroupInput("Projects", "", c("a", "b", "c"))),
                             column(4, uiOutput('dates'))))
        )
    )
)

server <- function(input, output) {
    output$dates <- renderUI({
        lapply(input$Projects, function(project) {
            div(dateInput(paste0("proj_date_",project), paste("Project", project, "date")))
        })
    })
}

shinyApp(ui, server)
© www.soinside.com 2019 - 2024. All rights reserved.