繁体   English   中英

替换observeEvent() 以在闪亮的应用程序中恢复自动功能

[英]Replace observeEvent() to restore automatic functionality in a shiny app

我在下面有一个闪亮的应用程序,当我从第一个复选框组“当前选择:”中选择它们时,我使用操作actionbutton “更新”来更新最后一个复选框组“显示视觉效果的代码:”的选择。 问题是我想摆脱操作actionbutton并自动进行选择和更新。 observeEvent()使用了observeEvent() ,但我不确定如何替换它们以实现上述功能。

#app
library(shiny)
library(shinyWidgets)

server <- function(input, output,session) {
  ## Pickerbox Ticker Selection ----
  output$str <- renderUI({
    pickerInput(
      inputId = "strategy",
      label = HTML("<p><span style='color: black'>Select Strategies (Max of 8):</span></p>"),
      width = "100%",
      choices =c("VOO","VO", "VIOO","df","fg"),
      selected = c("VOO","VO", "VIOO"),
      multiple = TRUE
      )
  })


  ## Checkbox Inputs ---- 

  #selected tickers
  output$check_group_buttons <- renderUI({
    prettyCheckboxGroup(
      inputId = "checked_tickers",
      selected = input$strategy[1:length(input$strategy)],
      label = HTML("<p><span style='color: black'>Current Selection(s):</span></p>"),
      choices = input$strategy[1:length(input$strategy)],
      #direction = "vertical",
      inline = TRUE,
      icon = icon("check-square-o"),
      status = "success",
      outline = TRUE,
      animation = "pulse"
    )
  })

  #display tickers
  output$check_group_buttons2 <- renderUI({
    prettyCheckboxGroup(
      inputId = "checked_tickers_to_chart",
      label = HTML("<p><span style='color: black'>Display Tickers for Visuals:</span></p>"),
      selected = input$strategy[1:length(input$strategy)],
      choices =  input$strategy[1:length(input$strategy)],
      inline = TRUE,
      icon = icon("check-square-o"),
      status = "success",
      outline = TRUE,
      animation = "pulse"
    )
  })


  ## Display Tickers ----
  observeEvent(input$update_tickers_for_picker,{
    updatePrettyCheckboxGroup(session = session,
                              inputId = "checked_tickers_to_chart",
                              choices = input$strategy,
                              selected = input$strategy,
                              prettyOptions = list(
                                icon = icon("check-square-o"),
                                status = "success",
                                outline = TRUE,
                                animation = "jelly")
    )

  })
  #Managed update of universe selections
  updated_tickers_for_picker <- eventReactive(input$update_tickers_for_picker,{
    input$checked_tickers
  })

  observeEvent(input$update_tickers_for_picker,{
    updatePickerInput(session = session,
                      inputId = "strategy",
                      choices = c("VOO","VO", "VIOO","df","fg"),
                      selected = updated_tickers_for_picker()
    )

  })
}

ui <- fluidPage(
  sidebarPanel(
    uiOutput("str", width = 6),

    uiOutput("check_group_buttons"),
    actionButton(inputId = "update_tickers_for_picker",
                 label = "Update",icon = icon("play-circle"),
                 style="color: #fff; background-color: #198dc7; border-color: #222d32; border-radius: 70px"),
    uiOutput("check_group_buttons2")
  ),

          mainPanel(

          ))

shinyApp(ui = ui, server = server)

你在寻找这样的东西吗? 这个例子来自UpdateCheckboxGroupInput上的闪亮帮助。

目标的技巧是使用observe作为你的反应环境来监视第一个复选框组。

把它放在你的服务器中,接近尾声。

...
 #Managed update of universe selections
 observe({
    updated_tickers_for_picker <- input$checked_tickers

    if (is.null(updated_tickers_for_picker))
      updated_tickers_for_picker <- character(0)

    updatePrettyCheckboxGroup(session = session,
                             inputId = "checked_tickers_to_chart",
                             choices = updated_tickers_for_picker,
                             selected = updated_tickers_for_picker,
                             prettyOptions = list(
                               icon = icon("check-square-o"),
                               status = "success",
                               outline = TRUE,
                               animation = "jelly"),
                             inline= TRUE
    )
 })
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM