Свернуть / развернуть окно в Shinydashboard, нажав actionLink - PullRequest
1 голос
/ 24 января 2020

У меня проблема с 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)
...