2016-11-28 16 views
1

メッセージまたは通知項目を含むヘッダーにドロップダウンを含めると、クリックすると自動的に "メッセージが1つあります"というメッセージが表示されます。どのように私はメッセージを表示できますが、 "あなたは1つのメッセージを持っています"という文を表示できませんか?以下に再現するシャイニーダッシュボードヘッダーの変更ドロップダウン

例:

ui <- dashboardPage(
    dashboardHeader(dropdownMenu(type = "messages", 
           messageItem(
           from = "Sales Dept", 
           message = "Sales are steady this month." 
           ))), 
    dashboardSidebar(), 
    dashboardBody() 
) 

server <- function(input, output) { } 

shinyApp(ui, server) 

答えて

4

その文がdropdownMenu機能にハードコードされて表示されます。

function (..., type = c("messages", "notifications", "tasks"), 
      badgeStatus = "primary", icon = NULL, .list = NULL) 
{ 
    type <- match.arg(type) 
    if (!is.null(badgeStatus)) validateStatus(badgeStatus) 
    items <- c(list(...), .list) 
    lapply(items, tagAssert, type = "li") 
    dropdownClass <- paste0("dropdown ", type, "-menu") 
    if (is.null(icon)) { 
     icon <- switch(type, messages = shiny::icon("envelope"), 
     notifications = shiny::icon("warning"), tasks = shiny::icon("tasks")) 
    } 
    numItems <- length(items) 
    if (is.null(badgeStatus)) { 
     badge <- NULL 
    } 
    else { 
     badge <- span(class = paste0("label label-", badgeStatus), 
         numItems) 
    } 
    tags$li(
     class = dropdownClass, 
     a(
      href = "#", 
      class = "dropdown-toggle", 
      `data-toggle` = "dropdown", 
      icon, 
      badge 
     ), 
     tags$ul(
      class = "dropdown-menu", 
      tags$li(
       class = "header", 
       paste("You have", numItems, type) 
      ), 
      tags$li(
       tags$ul(class = "menu", items) 
      ) 
     ) 
    ) 
} 

我々が文をpaste("You have", numItems, type)で構築されていることがわかります。

ui <- dashboardPage(
    dashboardHeader(dropdownMenuCustom(type = "messages", 
            customSentence = customSentence, 
           messageItem(
           from = "Sales Dept", 
           message = "Sales are steady this month." 
           ))), 
    dashboardSidebar(), 
    dashboardBody() 
) 

server <- function(input, output) { } 

shinyApp(ui, server) 
+0

そうで文完全上書きを削除するには:

customSentence <- function(numItems, type) { paste("This is a custom message") } # Function to call in place of dropdownMenu dropdownMenuCustom <- function (..., type = c("messages", "notifications", "tasks"), badgeStatus = "primary", icon = NULL, .list = NULL, customSentence = customSentence) { type <- match.arg(type) if (!is.null(badgeStatus)) shinydashboard:::validateStatus(badgeStatus) items <- c(list(...), .list) lapply(items, shinydashboard:::tagAssert, type = "li") dropdownClass <- paste0("dropdown ", type, "-menu") if (is.null(icon)) { icon <- switch(type, messages = shiny::icon("envelope"), notifications = shiny::icon("warning"), tasks = shiny::icon("tasks")) } numItems <- length(items) if (is.null(badgeStatus)) { badge <- NULL } else { badge <- span(class = paste0("label label-", badgeStatus), numItems) } tags$li( class = dropdownClass, a( href = "#", class = "dropdown-toggle", 'data-toggle' = "dropdown", icon, badge ), tags$ul( class = "dropdown-menu", tags$li( class = "header", customSentence(numItems, type) ), tags$li( tags$ul(class = "menu", items) ) ) ) } 

アン最小限の例:それを変更する 一つの方法は、あなたがしたい文を使用して新しいパラメータを取る新しい関数を記述することです空白スペース - または、ショートカットがありますか? – user7066213

+0

これはエラーを示します:エラー:オブジェクト 'tagAssert'が見つかりません - アイデアですか? – user7066213

+0

投稿する前にコードを試しませんでした。申し訳ありません。 – denrou

関連する問題