R shinyjs shinydashboard 框在操作按钮输入时展开

R shinyjs shinydashboard box uncollapse on action button input

在我闪亮的应用程序中,我有几个框在应用程序启动时折叠起来。单击操作按钮后,计算结果为 运行,然后框应展开并显示结果。这是我正在使用的示例代码,但它不会展开框。我从这里 得到了 "jscode" 的代码。我相信此代码用于在单击按钮时折叠框;我不确定如何让它在单击按钮时展开框。

非常感谢,

克里纳

ui.R

library(shiny)
library(shinyBS)
library(dplyr)
library(shinydashboard)

# javascript code to collapse box
jscode <- "
shinyjs.collapse = function(boxid) {
$('#' + boxid).closest('.box').find('[data-widget=collapse]').click();
}
"

#Design sidebar
sidebar <- dashboardSidebar(width = 225, collapsed=F, 
                            sidebarMenu(id="tabs",
                                        menuItem("XYZ", tabName = "XYZ", selected=TRUE)))

#Design body 
body <- dashboardBody(shinyjs:::useShinyjs(), 
                      shinyjs:::extendShinyjs(text = jscode),
             tabItems(
               tabItem(tabName = "zz", 
                      fluidRow(box(actionButton('go','Go', class='btn btn-info', icon=icon('play-circle-o','fg-lg'))),
                               box(id="B1", collapsible=T, collapsed = T, status = "primary", color="blue", solidHeader = T, 
                                title="Test")))))

Header <- dashboardHeader()

#Show title and the page (includes sidebar and body)
dashboardPage(Header, sidebar, body)

server.R

library(shiny)
library(shinyBS)
library(dplyr)
library(shinydashboard)

# javascript code to collapse box
jscode <- "
shinyjs.collapse = function(boxid) {
$('#' + boxid).closest('.box').find('[data-widget=collapse]').click();
}
"
shinyServer(function(input, output, session){

eventReactive(input$go,
              {js$collapse("B1")
              js$collapse("B2")})
})

您需要使用 observeEvent 而不是 eventReactive。您的代码将如下所示:

library(shiny)
library(shinyBS)
library(dplyr)
library(shinydashboard)
library(shinyjs)


# javascript code to collapse box
jscode <- "
shinyjs.collapse = function(boxid) {
$('#' + boxid).closest('.box').find('[data-widget=collapse]').click();
}
"

#Design sidebar
sidebar <- dashboardSidebar(width = 225, collapsed=F, 
                            sidebarMenu(id="tabs",
                                        menuItem("zz", tabName = "zz", selected=TRUE)))

#Design body 
body <- dashboardBody(shinyjs:::useShinyjs(), 
                      shinyjs:::extendShinyjs(text = jscode),
                      tabItems(
                        tabItem(tabName = "zz", 
                                fluidRow(box(actionButton('go','Go', class='btn btn-info', icon=icon('play-circle-o','fg-lg'))),
                                         box(id="B1", collapsible=T, collapsed = T, status = "primary", color="blue", solidHeader = T, 
                                             title="Test")))))

Header <- dashboardHeader()

#Show title and the page (includes sidebar and body)
ui <- dashboardPage(Header, sidebar, body)


server <- shinyServer(function(input, output, session){
  
  observeEvent(input$go,{js$collapse("B1")})
})

shinyApp( ui = ui, server = server)