在shinyR UI

时间:2016-04-19 07:19:31

标签: r shiny-server shiny shinydashboard

我的 Shinyr 应用程序正在使用dateRangeInput选择器,其日期范围的默认值介于昨天和15天之前,但是当应用程序运行超过一天时,我希望默认日期范围将相应更新,我知道在服务器端你可以调用invalidateLater,但我不知道在应用程序的UI端可以做什么,dateRangeInput在UI端看起来像这样:

dateRangeInput('dateRange',label = 'Date',start = Sys.Date() - 15, end = Sys.Date()-1)

1 个答案:

答案 0 :(得分:0)

好的,我不确定你为什么要在客户端这样做,但有一种方法。您可以在客户端上添加一个JavaScript,它与invalidateLater的任何构造完全相同。但这比服务器端版本更令人困惑。

以下代码:

library(shiny)

ui <- shinyUI(fluidPage(
  dateRangeInput('dateRange',label = 'Date',start = Sys.Date() - 15, end = Sys.Date() - 1),
  tags$script(HTML("
    $(document).ready(function() {
      var initDate = new Date();

      setInterval(function() {
        var currentDate = new Date();
        if(currentDate.getDate() != initDate.getDate()) {
          initDate = currentDate;

          var start = new Date();
          start.setDate(currentDate.getDate() - 15);

          var end = new Date();
          end.setDate(currentDate.getDate() - 1);

          /* Insert Id of your dateRangeInput */
          var dateInput = $('#dateRange').find('input');
          dateInput.eq(0).datepicker('update', start);
          dateInput.eq(1).datepicker('update', end);
        };
      /* Insert interval in millis below. */
      }, 3600000);
    });
  "))
))

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

shinyApp(ui, server)