相关疑难解决方法(0)

一旦所有其他反应完成变化,我如何确保闪亮的反应图仅改变?

我有一个闪亮的应用程序,用户在其中选择一组输入,例如x范围,y范围,缩放类型以及通过下拉列表选择数据集的特定子集.

这一切都是通过使用反应物来完成的.X和Y范围滑块输入对数据集选择的变化作出反应,因为必须再次找到最小值和最大值.这可能需要大约1-2秒,而闪亮的应用程序正在工作,用户在下拉列表中选择一个不同的选项.在这1-2秒期间,绘图将切换为使用旧的x和y范围绘制所选的新数据子集,然后在x和y范围滑块更改后快速切换到正确的绘图.

修复就是通过隔离其他所有内容来刷新按钮上的图.但是有没有办法让情节对变化保持反应,但是等到所有依赖事物都完成计算?

谢谢

这是情节:

output$plot1 <- rCharts::renderChart2({    
    if(!is.null(input$date_of_interest) && 
         !is.null(input$xrange) && 
         !is.null(input$yrange) &&
         !is.null(data()) &&
         isolate(valid_date_of_interest())) {
      filtered_data<- dplyr::filter(isolate(data()), id==input$choice)
      p <- tryCatch(plot_high_chart(
                           data,
                           first_date_of_interest = input$date_of_interest, 
                           ylim = input$yrange,
                           xlim = input$xrange), 
                    error = function(e) e, 
                    warning = function(w) w)
      if(!inherits(p, "error") && !inherits(p, "warning")) {
        return(p)
      }
    } 
    return(rCharts::Highcharts$new())
  })
Run Code Online (Sandbox Code Playgroud)

和x范围(y范围相似):

output$xrange <- renderUI({
    if(!is.null(input$date_of_interest) && 
       !is.null(input$choice) &&
       !is.null(valid_date_of_interest()) &&
       isolate(valid_date_of_interest())) {
          temp_data <- dplyr::filter(isolate(data()), date == input$date_of_interest)
          temp <- data.table::data.table(temp_data, key = "child.id")
          the_days <- as.double(as.Date(temp$last.tradeable.dt) …
Run Code Online (Sandbox Code Playgroud)

r shiny

19
推荐指数
1
解决办法
9968
查看次数

防止 pickerInput 在每次选择某些内容时更新(R、Shiny)

我已经搜索了 stackoverflow 和整个网络,但我找不到这个看似简单的问题的好答案。

情况如下:

  • 我有一个闪亮的应用程序,与数据库连接
  • 我有多个用户输入(Pickerinputs),用户可以在其中选择多个参数
  • 用户输入都是相互依赖的

出现的问题如下:

  • 如果用户勾选多个汽车品牌(例如雷诺、标致和宝马),则链接到此选择的选择器输入(这些品牌的特定汽车型号)将更新三次。由于许多选择器输入相互链接,这会造成混乱的用户体验。

需要解决方案

  • 我认为解决方案很简单:pickerinput 只需要在输入关闭后发送选定的值即可;它不需要在用户每次选择后发送值(并触发更新)。来自AirdatePickerInputShinywidgets 的具有此特定功能(update_on=c('change', 'close')。我需要的是我的 pickerInput在“关闭”时更新。这样结果值仅发送回服务器一次。

示例:用户界面

ui <- fluidPage(
  
  # Title panel
  fluidRow(
    column(2,
           wellPanel(
           h3("Filters"),
           uiOutput("picker_a"),
           uiOutput("picker_b"),
           )
    ),
  )
)
Run Code Online (Sandbox Code Playgroud)

服务器

server <- function(input, output, session) {
  
  # Start values for each filter  
  all_values_for_a <- tbl(conn, "table") %>%
    distinct(a) %>%
    collect()
  
  all_values_for_b <- tbl(conn, "table") %>%
    distinct(b) %>%
    collect()
  
  output$picker_a <- renderUI({
    pickerInput(
      inputId = "picker_a",
      label = "a:", 
      choices …
Run Code Online (Sandbox Code Playgroud)

javascript r shiny

5
推荐指数
1
解决办法
1150
查看次数

标签 统计

r ×2

shiny ×2

javascript ×1