Восстановить dateRangeInput как пустое - PullRequest
0 голосов
/ 15 февраля 2019

Я могу начать dateRangeInput с пустыми start и end в Shiny.

dateRangeInput("date", "Date input", start = "", end = "")

После выбора в этом диапазоне дат, когда я пытаюсь

updateDateRangeInput(session, "date", start = "", end = "")

Это не работает.Он работает с другими видами входов (см. Ниже).

Вот пример, когда я нажимаю на go, он ставит дату, когда я нажимаю на go2, он ничего не делает.

library(shiny)
shinyApp(
  ui = fluidPage(
    h4("Date:"),
    # Starting with an empty date
    dateRangeInput("date", "Date input", start = "", end = ""), 
    actionButton("go","go"),
    actionButton("go2","go2"), 
    # And an empty button
    textInput("text", "text"), 
    actionButton("go3","go3")
  ),
  server = function(input, output, session){
    observeEvent( input$go , {
      # Will change the date accordingly
      updateDateRangeInput(
        session, 
        "date", 
        start = Sys.Date()-10, 
        end = Sys.Date()-5
      )
    })
    observeEvent( input$go2 , {
      # Does nothing
      updateDateRangeInput(
        session, 
        "date", 
        start = "", 
        end = ""
      )
    })
    observeEvent( input$go3 , {
      # Empties the text input
      updateTextInput(
        session, 
        "text", 
        value = ""
      )
    })
  }
)

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Формат даты необходим.Вы можете использовать NA вместо "".

library(shiny)
shinyApp(
  ui = fluidPage(
    h4("Date:"),
    dateRangeInput("date", label = h5("Date input"), start = "", end = ""), 
    actionButton("go","go"),
    actionButton("go2","go2")
  ),
  server = function(input, output, session){
    observeEvent( input$go , {
      cat("go1\n")
      updateDateRangeInput(session, "date", start = Sys.Date()-10, end = Sys.Date()-5)
    })
    observeEvent( input$go2 , {
      cat("go2\n")
      updateDateRangeInput(session, "date", start = NA, end = NA)
    })
  }
)
0 голосов
/ 15 февраля 2019

Вот альтернативный подход, использующий reset() из library(shinyjs) вместо updateDateRangeInput:

library(shiny)
library(shinyjs)
shinyApp(
  ui = fluidPage(
    useShinyjs(),
    h4("Date:"),
    # Starting with an empty date
    dateRangeInput("date", "Date input", start = "", end = ""), 
    actionButton("go","go"),
    actionButton("go2","go2"), 
    # And an empty button
    textInput("text", "text"), 
    actionButton("go3","go3")
  ),
  server = function(input, output, session){
    observeEvent( input$go , {
      # Will change the date accordingly
      updateDateRangeInput(
        session, 
        "date", 
        start = Sys.Date()-10, 
        end = Sys.Date()-5
      )
    })
    observeEvent( input$go2 , {
      reset("date")
    })
    observeEvent( input$go3 , {
      # Empties the text input
      updateTextInput(
        session, 
        "text", 
        value = ""
      )
    })
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...