2017-09-21 54 views
1

我使用sidebarPanel和mainPanel構建了一個包含fluidPage和佈局的Shiny應用程序。現在我正在使用一個最小化sidebarPanel的按鈕,但是當發生這種情況時mainPanel會保留其寬度。我想要發生的是mainPanel調整到新的屏幕大小,並使用整個窗口,而不是保持它通常使用的原始66%。R Shiny - 當我最小化邊欄面板時調整MainPanel窗口的尺寸

這是我使用的server.r文件中的按鈕事件:

observeEvent(input$showpanel, { 

if(input$showpanel == TRUE) { 

shinyjs::show(id = "Sidebar") 
shinyjs::enable(id = "Sidebar") 
} 
else { 

    shinyjs::hide(id = "Sidebar") 
} 
}) 

這是我使用的ui.r文件,是目前mainPanel中窗口頂部的按鈕。

mainPanel(
    bsButton("showpanel", "Show/hide sidebar", type = "toggle", value = TRUE), 

不知道是否有添加CSS或HTML到的mainPanel窗口時,我隱藏sidebarPanel的方式。

回答

3

您可以通過將mainPanel的類別從col-sm-8更改爲col-sm-12來增加寬度。看看下面的代碼:

library(shiny) 
library(shinyjs) 
library(shinyBS) 

ui <- fluidPage(
    useShinyjs(), 
    sidebarLayout(

    sidebarPanel(id = "Sidebar", 
     h2("This is a sidebar panel") 
    ), 

    mainPanel(id ="Main", 
     bsButton("showpanel", "Show/hide sidebar", type = "toggle", value = TRUE) 
    ) 
) 

) 

server <- function(input, output, session){ 
    observeEvent(input$showpanel, { 

    if(input$showpanel == TRUE) { 
     removeCssClass("Main", "col-sm-12") 
     addCssClass("Main", "col-sm-8") 
     shinyjs::show(id = "Sidebar") 
     shinyjs::enable(id = "Sidebar") 
    } 
    else { 
    removeCssClass("Main", "col-sm-8") 
     addCssClass("Main", "col-sm-12") 
     shinyjs::hide(id = "Sidebar") 
    } 
    }) 


} 

shinyApp(ui = ui, server = server) 
+0

這工作在我的Shiny應用程序SBista。感謝你的幫助! – djturbine

相關問題