0
我正在構建一個Shiny應用程序,我希望使用dyRangeSelector
從dygraphs
提供輸入週期。更改dygraph的dyRangeSelector閃爍的反應時間
我的問題是,當選擇器收到一個「MouseUp」事件,即用戶完成選擇期間時,我只想要觸發反應性更改。現在,隨着選擇器的移動,事件被分派,這導致滯後的應用程序,因爲每個週期完成的計算需要幾秒鐘。本質上,Shiny也是,對我的品味起反應(我知道這是錯誤的方式 - 通常我們希望應用程序是超級反應)。
我可以修改何時發送被動請求嗎?
下面是一個顯示問題的小例子。
library(quantmod)
library(shiny)
library(dygraphs)
library(magrittr)
# Create simple user interface
ui <- shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
dygraphOutput("dygraph")
),
mainPanel(
plotOutput("complicatedPlot")
)
)
))
server <- shinyServer(function(input, output) {
## Read the data once.
dataInput <- reactive({
getSymbols("NASDAQ:GOOG", src = "google",
from = "2017-01-01",
auto.assign = FALSE)
})
## Extract the from and to from the selector
values <- reactiveValues()
observe({
if (!is.null(input$dygraph_date_window)) {
rangewindow <- strftime(input$dygraph_date_window[[1]], "%Y-%m-%d")
from <- rangewindow[1]
to <- rangewindow[2]
} else {
from <- "2017-02-01"
to <- Sys.Date()+1
}
values[["from"]] <- from
values[["to"]] <- to
})
## Render the range selector
output$dygraph <- renderDygraph({
dygraph(dataInput()[,4]) %>% dyRangeSelector() %>% dyOptions(retainDateWindow = TRUE)
})
## Render the "complicated" plot
output$complicatedPlot <- renderPlot({
plot(1,1)
text(1,1, values[["from"]])
Sys.sleep(1) ## Inserted to represent computing time
})
})
## run app
runApp(list(ui=ui, server=server))
太好了。那正是我所追求的。它「耗費」了我在啓動時的等待時間,但那完全沒問題。乾杯! – ekstroem