Проверка ввода даты и времени, чтобы предотвратить дату окончания, расположена до даты начала - PullRequest
0 голосов
/ 11 февраля 2020

Я использую dateRangeInput и хочу, чтобы дата окончания была раньше даты начала. Для этого я хочу использовать updateDateRangeInput .

Следующий код гарантирует, что конечная дата - 1 день после начальной. Но с моим решением невозможно изменить дату окончания впоследствии. Он всегда переходит на следующий день после начальной даты.

## Only run examples in interactive R sessions
if (interactive()) {

  ui <- fluidPage(
    dateRangeInput("Input_Dates", label = "Date", format = "DD dd-mm-yyyy", language = "en",
                                                  weekstart = 1, start = NULL, end = Sys.Date()+1)
  )

  shinyApp(ui, server = function(input, output, session) {

    observeEvent(input$Input_Dates[1],{

      start_date <- input$Input_Dates[1]
      end_date <- start_date + 1

      updateDateRangeInput(session, "Input_Dates",
                           start = start_date,
                           end = end_date)
    })  
  })
}

Как мне добиться, чтобы конечная дата в dateRangeInput автоматически обновлялась на день после начального дня и У меня есть возможность изменить дату окончания впоследствии?

1 Ответ

0 голосов
/ 11 февраля 2020

Как то так?

library(shiny)
## Only run examples in interactive R sessions
maxdate <- Sys.Date()+1

if (interactive()) {

  ui <- fluidPage(
    dateRangeInput("Input_Dates", label = "Date", format = "DD dd-mm-yyyy", language = "en",
                   weekstart = 1, start = NULL, end = maxdate,max = maxdate)
  )

  shinyApp(ui, server = function(input, output, session) {

    observeEvent(input$Input_Dates[1],{

      start_date <- input$Input_Dates[1]
      end_date <- start_date + 1
      req(end_date <= maxdate)

      updateDateRangeInput(session, "Input_Dates",start = start_date,end = end_date)
    })  
  })
}
...