将conditionalPanel附加到特定按钮而不是Shiny app(R)中的常规页面加载

时间:2014-05-08 17:14:22

标签: r shiny

我有一个conditionalPanel,我用它来显示我的一个Shiny页面上的计算进度。它调用一些javascript来显示计算的时间进度。

ui.R

 conditionalPanel("updateBusy() || $('html').hasClass('shiny-busy')",
 id='progressIndicator',
 "Calculating...",
 div(id='progress',includeHTML("timer.js")))

只要在页面上使用任何按钮或选择器,就会触发此操作。换句话说,导致页面重新加载的任何内容都会激活conditionalPanel。我怎样才能使它只激活特定的选择器或按钮。我认为它需要被捆绑成一个" isolate"表达什么的?

1 个答案:

答案 0 :(得分:2)

我没有你的timer.js所以" HELLO"而是显示。重新计算第一个图时,将显示进度。它不会显示在第二个图中。

runApp(list(ui = fluidPage(

  # Application title
  titlePanel("Hello Shiny!"),

  sidebarLayout(

    # Sidebar with a slider input
    sidebarPanel(
      numericInput('n', 'Number of obs', 100),
      conditionalPanel("$('#plot').hasClass('recalculating')",
                       id='progressIndicator',
                       "Calculating...",
                       div(id='progress',"HELLO")
      ),
      numericInput('m', 'Second set Number of obs', 100)
    ),
    mainPanel(
      plotOutput('plot'),
      plotOutput('plotA')
    )
  )
),
server = function(input, output) {
  output$plot <- renderPlot({ Sys.sleep(4)
                              hist(runif(input$n)) 
  })
  output$plotA <- renderPlot({ hist(runif(input$m)) })
}
)
)