首页 > 解决方案 > R闪亮的应用程序一个按钮重新呈现整个用户界面

问题描述

这是我的代码示例

# I have a list of reactive elements
comparisons_list <-  reactiveValues(elements = list(), size = 0)

# I have a reactive conductor using that elements list
KPI_reactive_elements <- reactive({
  # maybe iterate through the input fields instead of 
  comparisons_list$elements %>%
    lapply(function (el) {
      KPIs %>%
        filter(ORDER_DATE >= input[[el$id]][1], ORDER_DATE <= input[[el$id]][2]) %>%
        arrange(ORDER_DATE) %>%
        mutate(group_name = el$name)
    }) %>%
    bind_rows()
})

我还有一个不同日期范围的用户界面,这些用户界面会根据反应比较列表而变化

fluidPage(
  fluidRow(
    column(width=12, class="text-center",
    actionButton("addComparison", "Add Comparison", class="btn btn-primary"), br(),
    tags$ul(class="list-group unstyled list-unstyled",  br(), renderUI({
      tagList(
        comparisons_list$elements %>%
          lapply(function (el) tags$li(class="list-item",
            dateRangeInput(el$id,
                           el$name,
                           start  = el$start,
                           end    = el$end,
                           format = "mm/dd/yy",
                           separator = " - "),
            )))
      })
    ), renderUI({
        if(comparisons_list$size > 0) {
          div(
            selectInput("compare_field", "",
                        choices = COMPARE_FIELDS, selected = DEFAULT_COMPARE_FIELD),
            actionButton("clearComparisons", "Clear Comparisons", class="btn btn-warning")
          )
        } else {
          div()
        }
      })
    )))

我有一个按钮事件监听器来添加新的比较

observeEvent(input$addComparison, {
  comparisons_list$size <- comparisons_list$size + 1
  comp_id <- paste0("comparison_", comparisons_list$size)
  print(comp_id)
  comparisons_list$elements[[comp_id]] <- list(
        start = Sys.Date() - 31,
        end   = Sys.Date() - 1,
        index = comparisons_list$size,
        name = paste0("Comparison ", comparisons_list$size),
        id = comp_id
  )
})

最后我有一个显示我的数据的 HighCharter 折线图

renderHighchart({
  field <- gsub("_", " ", input$compare_field)
  comparisonTooltip <- paste(field, " is <b>{point.y}</b> on <b>{point.ORDER_DATE}</b>")

  if (comparisons_list$size > 0) {
    KPI_comparisons() %>%
      arrange(ORDER_DATE) %>%
      hchart(type="line", hcaes(y = !!input$compare_field, group=group_name)) %>%
      hc_tooltip(crosshairs = TRUE, borderWidth = 1.5,
                 headerFormat = "", pointFormat = comparisonTooltip) %>%
      hc_add_theme(hc_theme_monokai())
  }
})

我的问题是,当单击Add Comparison按钮时,会重新呈现输入 ui 以及图表。

这是按钮事件侦听器的问题还是其他问题?

提前致谢!

标签: rshiny

解决方案


推荐阅读