У меня проблема с costum js -функциями в блестящем, и так как я мало знаю о js, я мог бы воспользоваться небольшой помощью.
Мне нравится иметь коробки с actionLink, чтобы свернуть коробка и разверните другую коробку. Я уже нашел полезный фрагмент кода от @DeanAttali здесь Как вручную свернуть окно в блестящей панели инструментов , но это приводит к переключению, поскольку кнопка свертывания / развертывания нажимается «программно».
Ниже приведен небольшой пример, где также предоставляемая функция @DeanAttali не работает правильно, и я не знаю почему.
Я был бы очень рад, если бы кто-нибудь мог мне помочь или дать мне подсказку.
library(shiny)
library(shinydashboard)
library(shinyjs)
jscode <- "
shinyjs.toggleBox = function(boxid) {
$('#' + boxid).closest('.box').find('[data-widget=collapse]').click();
};
shinyjs.collapseBox = function(boxid) {
$('#' + boxid).collapse('hide')};
shinyjs.expandBox = $function(boxid) {
$('#' + boxid).collapse('show')};
"
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
useShinyjs(),
extendShinyjs(text = jscode),
actionLink("toggleBoxes", "Toggle boxes"),
box(id="box1", title = "box 1", width = 2,
collapsible = TRUE,
actionLink("openBox2", "open box 2")),
box(id="box2", title = "box 2", width = 2,
collapsible = TRUE, collapsed = TRUE,
actionLink("openBox1", "open box 1"))
)
)
server <- function(session, input, output) {
observeEvent(input$openBox2, {
js$collapseBox("box1")
js$expandBox("box2")
})
observeEvent(input$openBox1, {
js$expandBox("box1")
js$collapseBox("box2")
})
observeEvent(input$toggleBoxes, {
js$toggleBox("box1")
js$toggleBox("box2")
})
}
shinyApp(ui = ui, server = server)