【问题标题】:R shinyjs shinydashboard box uncollapse on action button inputR shinyjs shinydashboard 框在操作按钮输入时展开
【发布时间】:2018-09-14 12:50:08
【问题描述】:

在我闪亮的应用程序中,我有几个在应用程序启动时折叠的框。单击操作按钮后,将运行计算,然后框应展开并显示结果。这是我正在使用的示例代码,但它不会展开框。我从这里How to manually collapse a box in shiny dashboard 获得了“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)

服务器.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")})
})

【问题讨论】:

    标签: r shiny shinyjs


    【解决方案1】:

    您需要使用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)
    

    【讨论】:

      猜你喜欢
      • 2019-08-07
      • 2018-09-26
      • 2021-06-13
      • 2019-03-24
      • 2021-11-27
      • 2015-11-26
      • 1970-01-01
      • 2019-07-29
      • 2014-06-17
      相关资源
      最近更新 更多