2017-08-02 5 views
0

シャイニーダッシュボードボックスが折りたたまれているかどうかを確認する方法を探しています。 How to manually collapse a box in shiny dashboardに@daattaliで大きな応答を読み取ることによりシャイニーダッシュボードボックスがサーバー側から折りたたまれているかどうかを確認する方法

私はUIを検査することによって

library(shiny) 
library(shinydashboard) 
library(shinyjs) 

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

ui <- dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(), 
    dashboardBody(
    useShinyjs(), 
    extendShinyjs(text = jscode), 
    actionButton("bt1", "Collapse box1"), 
    actionButton("bt2", "Collapse box2"), 
    br(), br(), 
    box(id = "box1", collapsible = TRUE, p("Box 1")), 
    box(id = "box2", collapsible = TRUE, p("Box 2")) 
) 
) 

server <- function(input, output) { 
    observeEvent(input$bt1, { 
    js$collapse("box1") 
    }) 
    observeEvent(input$bt2, { 
    js$collapse("box2") 
    }) 
} 

shinyApp(ui, server) 

下のコードに示すように、shinyjsパッケージを使用して、サーバ側からボックスを崩壊させることができる知っていますHTML私は自分の問題に対する答えがアイコンクラスにアクセスすることで解決できることを知っていますが(fa fa-faかfa fa minかどうかを調べるために)、どうやってそれを行うのか分かりません。

ご協力いただければ幸いです。あなたの例では

collapseInput <- function(inputId, boxId) { 
    tags$script(
    sprintf(
     "$('#%s').closest('.box').on('hidden.bs.collapse', function() {Shiny.onInputChange('%s', true);})", 
     boxId, inputId 
    ), 
    sprintf(
     "$('#%s').closest('.box').on('shown.bs.collapse', function() {Shiny.onInputChange('%s', false);})", 
     boxId, inputId 
    ) 
) 
} 

:ユーザーはこのようなもので、箱を折りたたむときは、新しい入力を作成することができます

乾杯

答えて

0

は、トリガ

library(shiny) 
library(shinydashboard) 
library(shinyjs) 

jscode <- " 
shinyjs.collapse = function(boxid) { 
$('#' + boxid).closest('.box').find('[data-widget=collapse]').click(); 
} 
" 
collapseInput <- function(inputId, boxId) { 
    tags$script(
    sprintf(
     "$('#%s').closest('.box').on('hidden.bs.collapse', function() {Shiny.onInputChange('%s', true);})", 
     boxId, inputId 
    ), 
    sprintf(
     "$('#%s').closest('.box').on('shown.bs.collapse', function() {Shiny.onInputChange('%s', false);})", 
     boxId, inputId 
    ) 
) 
} 


ui <- dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(), 
    dashboardBody(
    useShinyjs(), 
    extendShinyjs(text = jscode), 
    actionButton("bt1", "Collapse box1"), 
    actionButton("bt2", "Collapse box2"), 
    br(), br(), 
    box(id = "box1", collapsible = TRUE, p("Box 1")), 
    box(id = "box2", collapsible = TRUE, p("Box 2")), 
    collapseInput(inputId = "iscollapsebox1", boxId = "box1"), 
    verbatimTextOutput(outputId = "res") 
) 
) 

server <- function(input, output) { 
    observeEvent(input$bt1, { 
    js$collapse("box1") 
    }) 
    observeEvent(input$bt2, { 
    js$collapse("box2") 
    }) 

    output$res <- renderPrint({ 
    input$iscollapsebox1 
    }) 
} 

shinyApp(ui, server) 

を、変更することができますtrue/false'collapse'/'expanded' in機能collapseInputShiny.onInputChange必要に応じて。

+0

ありがとうございます@ Victorp、私はそれを考え出したことはありませんでした! –

関連する問題