在shinyR用户界面自动更新我的dateRangeInput
我的Shinyr应用程序正在使用一个在shinyR用户界面自动更新我的dateRangeInput,r,shiny-server,shiny,shinydashboard,R,Shiny Server,Shiny,Shinydashboard,我的Shinyr应用程序正在使用一个日期范围输入选择器,默认值为date range,介于昨天和15天前,但是当应用程序运行超过一天时,我希望默认日期范围会相应更新,我知道在服务器端可以调用invalidateLater,但是我不知道在应用程序的UI端可以做什么,UI端的dateRangeInput如下所示: dateRangeInput('dateRange',label = 'Date',start = Sys.Date() - 15, end = Sys.Date()-1) 好吧,我不知
日期范围输入
选择器,默认值为date range,介于昨天和15天前,但是当应用程序运行超过一天时,我希望默认日期范围会相应更新,我知道在服务器端可以调用invalidateLater
,但是我不知道在应用程序的UI端可以做什么,UI端的dateRangeInput
如下所示:
dateRangeInput('dateRange',label = 'Date',start = Sys.Date() - 15, end = Sys.Date()-1)
好吧,我不知道你为什么要在客户端这样做,但有一种方法。您可以在客户机上添加一个JavaScript,该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)
库(闪亮)
用户界面