Tengo un tablero brillante con 10 cajas, y que se puede cerrar o plegar. Toda la identificación de la caja comienza con "caja". Estaba intentando configurar un botón de alerta cuando todas las cajas están cerradas o colapsadas.
A continuación se muestra el código del tablero:
library(shiny) library(shinydashboardPlus) box_create <- function(i){ shinydashboardPlus::box(tags$p(paste0("Box",i)), id = paste0("box", i), closable = TRUE, collapsible = TRUE) } all_box <- purrr::map(1:10, ~box_create(.x)) ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( all_box ) ) server <- function(input, output, session) { } shinyApp(ui, server) He notado que al presionar el botón cerrar o colapsar, los conjuntos brillantes muestran = 'ninguno' para ese cuadro. 
Entonces, ¿es posible extraer todos los estilos asociados con la identificación que comienza con 'box' y verificar si todas las propiedades de estilo se establecen como 'ninguna' usando jQuery?
Usando la versión de desarrollo de shinydashboardPlus, puede acceder al estado de la caja a través de su id (patrón: input$mybox$collapsed ).
Consulte este artículo relacionado .
Instálelo a través devtools::install_github("RinteRface/shinydashboardPlus")
library(shiny) library(tools) library(shinydashboard) library(shinydashboardPlus) box_ids <- paste0("box", 1:10) box_create <- function(box_id){ shinydashboardPlus::box(tags$p(toTitleCase(box_id)), id = box_id, closable = TRUE, collapsible = TRUE) } all_boxes <- lapply(box_ids, box_create) ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( all_boxes ) ) server <- function(input, output, session) { observe({ if(all(sapply(box_ids, function(box_id){input[[box_id]]$collapsed}))){ showModal(modalDialog("All boxes are collapsed!")) } }) # observe({ # print(paste("Is box1 collapsed?", input$box1$collapsed)) # }) } shinyApp(ui, server)Pensé que querías un botón cuando todos estaban colapsados O todos estaban cerrados. Aquí hay una solución para eso.
library(shiny) library(shinydashboard) library(shinydashboardPlus) box_create <- function(i){ shinydashboardPlus::box(tags$p(paste0("Box",i)), id = paste0("box", i), closable = TRUE, collapsible = TRUE) } all_box <- purrr::map(1:10, ~box_create(.x)) ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( all_box, div(id = "alert_button") ) ) server <- function(input, output, session) { observe({ boxes <- paste0("box", 1:10) visible_status <- sapply(boxes, \(x) input[[x]]$visible) collapsed_status <- sapply(boxes, \(x) input[[x]]$collapsed) if (!any(visible_status) || all(collapsed_status)) { insertUI( selector = "#alert_button", ui = div(id = "added", actionButton("btn","all hidden OR all collapsed")) ) } else { removeUI(selector = "#added") } }) } shinyApp(ui, server)