Я не знаю всех возможностей блестящих виджетов, но это, безусловно, может быть достигнуто путем отправки информации с сервера обратно в пользовательский интерфейс через пользовательские сообщения. Вот как я это сделал, хотя это выглядит довольно странно.
ui <- fluidPage(
column(
width = 4,
pickerInput(
inputId = "id", label = "Choices :",
choices = c("Banana", "Blueberry", "Cherry", "Coconut", "Grapefruit",
"Kiwi", "Lemon", "Lime", "Mango", "Orange", "Papaya"),
options = list(`actions-box` = TRUE,
`selected-text-format` = "count > 0",
`count-selected-text` = "{0}/{1} fruits"
),
multiple = TRUE
)
),
singleton({
tags$head(tags$script(
"Shiny.addCustomMessageHandler(\"testmessage\",
function(message) {
var x = document.getElementsByClassName(\"filter-option pull-left\");
x[0].innerHTML = message;
}
);"
))
})
)
server <- function(input,output,session) {
output$res <- renderPrint({
input$id
})
numOptions = 11
observe({
if(length(input$id) == numOptions){
session$sendCustomMessage(type = 'testmessage',
message = list("All"))
}
})
}
shinyApp(ui = ui, server = server)
Здесь я проверяю, все ли элементы выбраны в наблюдателе в функции сервера. Если они есть, я запускаю простую функцию JavaScript в пользовательском интерфейсе.