2016-04-19 1 views
-1

My ShinyrアプリはdateRangeInputセレクタを使用しています。デフォルトの値は昨日から15日前ですが、アプリが1日以上実行されている場合は、デフォルトの日付範囲はそれに応じて更新されますが、私はサーバ側でinvalidateLaterを呼び出すことができることを知っていますが、私はアプリのUI側で何ができるのか分かりません。自動更新my dateRangeInput at shinyR UI

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

答えて

0

さて、私はなぜあなたがクライアント側でこれをしたいのか分かりませんが、方法があります。クライアントにはinvalidateLaterを使用して構築するJavaScriptを正確に行うJavaScriptを追加できます。しかし、これはサーバー側のバージョンよりもずっと混乱します。以下

コード:

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)