我有一个conditionalPanel,我用它来显示我的一个Shiny页面上的计算进度。它调用一些javascript来显示计算的时间进度。
ui.R
conditionalPanel("updateBusy() || $('html').hasClass('shiny-busy')",
id='progressIndicator',
"Calculating...",
div(id='progress',includeHTML("timer.js")))
只要在页面上使用任何按钮或选择器,就会触发此操作。换句话说,导致页面重新加载的任何内容都会激活conditionalPanel。我怎样才能使它只激活特定的选择器或按钮。我认为它需要被捆绑成一个" isolate"表达什么的?
答案 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)) })
}
)
)