He estado trabajando en una aplicación brillante de R que permite a los usuarios buscar algunos datos. Se muestra en una tabla y quiero que esta tabla tenga dos funcionalidades:
Se supone que estas funcionalidades funcionan simultáneamente; por ejemplo, el usuario puede consultar la tabla al proporcionar algunas condiciones, seleccionar todas las filas que las cumplan usando algún botón y luego agregar más filas a la selección haciendo clic en ellas manualmente.
La primera funcionalidad se puede obtener fácilmente usando la extensión Select para DT, y funciona perfectamente bien.
La segunda funcionalidad se puede implementar tomando algunas entradas del usuario y seleccionando las filas apropiadas mediante el uso de objetos dataTableProxy y la función selectRows en el lado del servidor, y funciona perfectamente bien.
El problema surge cuando intento combinarlos. Sé que no es recomendable, la consola muestra advertencias al mezclarlos, pero simplemente me pareció la solución más rápida.
Aquí hay un código simplificado:
library(shiny) library(DT) ui <- fluidPage( dataTableOutput("my_table"), actionButton("my_button", "Select some rows") ) server <- function(input, output, session) { data(iris) output[["my_table"]] <- renderDataTable( iris, # extensions = c("Select", "Buttons"), # options = list( # dom = 'Brtip', # buttons = c("selectAll", "selectNone"), ## select = list(style = "multi+shift", items = "row") # ), # server = FALSE, ## selection = "none" ) proxy <- dataTableProxy("my_table") observeEvent(input[["my_button"]], { proxy %>% selectRows(1:5) }) } shinyApp(ui, server) Las líneas que están comentadas activan los botones de selección y reemplazan la selección integrada predeterminada para DT con la API de selección implementada en la extensión Select , lo que hace que la selección de proxy en el lado del servidor sea imposible. Puedo dejar comentadas esas líneas doblemente comentadas y parece funcionar, pero solo de un vistazo. En realidad, la selección predeterminada de brillantes "pierde" con la selección de extensión, lo que puede demostrarse por el hecho de que, aunque algunas filas se muestran como seleccionadas, el botón "Deseleccionar todo" está inactivo.
Mi pregunta es: ¿cuál es la forma más fácil de combinar esos dos enfoques? ¿Hay alguna opción para la extensión "Seleccionar" que me falta que permitiría la selección por proxy brillante? Podría resolverlo implementando manualmente algunas devoluciones de llamada para la tabla en lugar de usar un proxy, pero parece mucho trabajo y agradecería cualquier sugerencia sobre cómo evitarlo.