我的 Shinyr 应用程序正在使用dateRangeInput
选择器,其日期范围的默认值介于昨天和15天之前,但是当应用程序运行超过一天时,我希望默认日期范围将相应更新,我知道在服务器端你可以调用invalidateLater
,但我不知道在应用程序的UI端可以做什么,dateRangeInput
在UI端看起来像这样:
dateRangeInput('dateRange',label = 'Date',start = Sys.Date() - 15, end = Sys.Date()-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)