2017-05-05 2 views
0

光沢のあるダッシュボードgithubから、ヘッダーの右上にドロップダウンメニューを作成することができましたが、メッセージや通知は3種類しかありません、およびタスク)。Rシャイニーダッシュボード - ヘッダーのカスタムドロップダウンメニュー

https://rstudio.github.io/shinydashboard/structure.html#structure-overview

カスタムドロップダウンを作成するための方法はありますか?私はユーザーにダッシュボードを調整するためのチェックボックス(表示/非表示、データのフィルタリングなど)をユーザーに与える設定をドロップダウンしたいと考えています。

答えて

0

シャイニーダッシュボードはadmin LTEに基づいています。したがって、既存のタイプのドロップダウンは管理LTEユースケース用に設計されています。これは多くのShinyアプリの使用法とはかなり異なっています。

管理者LTEでも使用できないものがある場合は、シャイニーダッシュボードでサポートされる可能性は低くなります。

具体的な質問については、some controls in the side barとすることができます。もう1つの可能性は、the wrench icon in boxを使用することです。これはまだShinyに実装されていません。

1

これを可能にする3つのタイプのメニューの1つをカスタマイズしました。アイテムにactionItemを追加することができます。 tabSelect trueの場合、sidebarMenuItemの選択をシミュレートします。

dropdownActionMenu <- function (..., title=NULL, icon = NULL, .list = NULL, header=NULL) { 
    items <- c(list(...), .list) 
    lapply(items, shinydashboard:::tagAssert, type = "li") 
    type <- "notifications" # TODO créer action + CSS 
    dropdownClass <- paste0("dropdown ", type, "-menu") 
    tags$li(class = dropdownClass, a(href = "#", class = "dropdown-toggle", 
    `data-toggle` = "dropdown", icon, title), tags$ul(class = "dropdown-menu", 
    if(!is.null(header)) tags$li(class="header",header), 
    tags$li(tags$ul(class = "menu", items)))) 
} 

actionItem = function (inputId, text, icon = NULL, tabSelect=FALSE) { 
    if(!is.null(icon)) { 
    shinydashboard:::tagAssert(icon, type = "i") 
    icon <- tagAppendAttributes(icon, class = paste0("text-", "success")) 
    } 
    if(tabSelect) { 
    tags$li(a(onclick=paste0("shinyjs.tabSelect('",inputId,"')"),icon,text)) 
    } else { 
    tags$li(actionLink(inputId,text,icon)) 
    } 
} 

サンプルコード

dashboardHeader(
    dropdownActionMenu(title="test", 
    actionItem("mnuFirst","First"), 
    actionItem("mnuSecond","Second") 
) 
) 
+0

ありがとう!私はサイドバーのメニュー項目に入れてしまいましたが、これを試してみる必要があります。 – FortuneFaded