Мне нужно создать приложение, в котором ввод времени в формате% T должен изменять временной диапазон, видимый на графике. Я использую Блестящий и Dygraph, и он работает, как указано в документации: можно извлечь dateWindow. Однако изменения в моей системе происходят в более точном масштабе времени, поэтому мне нужно иметь возможность контролировать часы, минуты и секунды в селекторе диапазона. Есть ли способ добиться этого?
Вот пример: вы можете изменить диапазон с помощью селектора диапазона dygraph, и он показывает часы и минуты, но когда я нажимаю кнопку, которая читает окно dygraph_date_window, к реактивному значение, только дата добавляется. Я ищу обходной путь, потому что я хочу иметь возможность обновлять поле ввода времени и (в настоящее время не в коде) обновлять диапазон в графике, используя поле ввода времени.
library(dygraphs)
library(shiny)
library(shinyTime)
data("sample_matrix")
sample_xts<-as.xts(sample_matrix)
ui<-fluidPage(
dygraphOutput("dygraph"),
verbatimTextOutput("from"),
dateInput("start_date","Start date"),
timeInput("start_time","Start time"),
actionButton("settime_bttn", "Set time")
)
server<-function(session, input, output) {
#1. initialize time constraints
timelimits<-reactiveValues(start=start(sample_xts),end=end(sample_xts))
#2. draw dygraph with range selector
output$dygraph <- renderDygraph({
dygraph(sample_xts)%>%
dyRangeSelector(dateWindow = c(timelimits$start,timelimits$end))
})
#3. modify timelimits and input fields with range selector
observeEvent( input$settime_bttn, {
rs<-input$dygraph_date_window
timelimits$start<-rs[[1]]
timelimits$end<-rs[[2]]
updateDateInput(session, "start_date", value = substr(rs[[1]],1,10))
updateTimeInput(session, "start_time", value = rs[[1]])
})
output$from <- renderText({
req(input$dygraph_date_window[[1]])
})
}
shiny::runApp(list(ui = ui, server = server))