2017-09-21 22 views
1

fluidPageとsidebarPanelとmainPanelを使用したレイアウトを持つShinyアプリケーションを作成しました。今はサイドバーパネルを最小限に抑えるボタンを使用していますが、そのときにmainPanelがその幅を保持します。私がしたいのは、mainPanelが新しいスクリーンサイズに調整し、オリジナルの66%を通常使用するのではなく、ウィンドウ全体を使用することです。R Shiny - sidebarPanelを最小化するとMainPanelウィンドウのサイズを変更します

これは私がserver.rファイルで使用していますボタンのイベントです:

observeEvent(input$showpanel, { 

if(input$showpanel == TRUE) { 

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

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

これは私がmainPanelウィンドウの一番上に現在あるui.rファイルで使用していますボタンです。私はsidebarPanelを隠すときmainPanelウィンドウにCSSやHTMLを追加する方法があるかどう

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

は知ってはいけません。

答えて

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

関連する問題