【问题标题】:Avoid max lower than min in Shiny dateRangeInput在 Shiny dateRangeInput 中避免最大值低于最小值
【发布时间】:2016-06-19 17:15:52
【问题描述】:

我想知道是否有技巧可以防止用户在 Shiny 中使用 dateRangeInput 将结束日期设置在开始日期之前(比如第一个日期是“01-01-2016”,第二个日期不能低于那个)。

我尝试每次都重新定义最小值和最大值,但后来我卡住了,无法将最小值恢复到原来的值。

【问题讨论】:

标签: r shiny


【解决方案1】:

这是一个例子。基本上它会观察开始日期的变化,然后动态更新dateRangeInput 对象。如果之前选择的结束日期早于新的开始日期,则更新结束日期。最短可能日期也会更新,因此用户无法选择早于开始日期的结束日期。

library(shiny)

ui <- shinyUI(fluidPage(

   titlePanel("Dynamically change dateRangeInput"),

   sidebarLayout(
      sidebarPanel(
        dateRangeInput("date_range", "Range of dates")
      ),

      mainPanel(
         textOutput("text")
      )
   )
))

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

  # Update the dateRangeInput if start date changes
  observeEvent(input$date_range[1], {
    end_date = input$date_range[2]
    # If end date is earlier than start date, update the end date to be the same as the new start date
    if (input$date_range[2] < input$date_range[1]) {
      end_date = input$date_range[1]
    }
    updateDateRangeInput(session,"date_range", start=input$date_range[1], end=end_date, min=input$date_range[1] )
  })

  output$text <- renderText({
    validate(
      need(input$date_range[2] >= input$date_range[1], "End date cannot be earlier than start date!")
    )
    input$date_range[2] >= input$date_range[1]
  })

})

shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多