2017-07-12 70 views
0

使用dashboardPage我做了一個儀表板的框。Shiny - dashboardPage - 如何添加一個按鈕到框標題

我希望能夠點擊框頭上的某處觸發某些操作。我知道頭部有一個按鈕的唯一情況就是可擴展框的情況。是否有可能將其推廣,以便在盒子的標題中點擊某個位置時觸發某個動作?

我的設計目標是在用戶單擊此按鈕時更新框中的信息,即更改框的內容。

謝謝!

body <- dashboardBody(
    fluidRow(
    box(
     title = "Title 1", width = 4, solidHeader = TRUE, status = "primary", 
     "Box content" 
    ), 
    box(
     title = "Title 1", width = 4, solidHeader = TRUE, status = "warning", 
     "Box content" 
    ) 
) 
) 
# We'll save it in a variable `ui` so that we can preview it in the console 
ui <- dashboardPage(
    dashboardHeader(title = "Row layout"), 
    dashboardSidebar(), 
    body 
) 
# Preview the UI in the console 
shinyApp(ui = ui, server = function(input, output) { }) 
+1

有後看看[這裏](https://stackoverflow.com/questions/37169039/direct-link-to-tabitem-with-r-shiny-dashboard)特別是部分:「*編輯:整個infoBox可點擊*「 – Biranjan

回答

0

如果你想在框頭的右下角的按鈕,你可以修改原始box功能或者你可以使用一些JavaScript創建框後添加的按鈕。

更簡單的解決方案是創建一個框標題actionLinkactionButton。貝婁是這兩種情況的一個例子。第一個框的標題爲actionLink,當用戶點擊它時,框的內容會更新。在第二個盒子上,標題是用純文本創建的,還有一個小的actionButton,它也會更新盒子的內容。對於第二個盒子,您可以添加一些自定義樣式來創建與普通盒子大小相同的標題。

library(shiny) 
library(shinydashboard) 

body <- dashboardBody(
    fluidRow(
    box(
     title = actionLink("titleId", "Update", icon = icon("refresh")), 
     width = 4, solidHeader = TRUE, status = "primary", 
     uiOutput("boxContentUI") 
    ), 
    box(
     title = p("Title 1", 
       actionButton("titleBtId", "", icon = icon("refresh"), 
        class = "btn-xs", title = "Update") 
    ), 
     width = 4, solidHeader = TRUE, status = "warning", 
     uiOutput("boxContentUI2") 
    ) 
) 
) 

ui <- dashboardPage(
    dashboardHeader(title = "Row layout"), 
    dashboardSidebar(), 
    body 
) 

server = function(input, output, session) { 
    output$boxContentUI <- renderUI({ 
    input$titleId 
    pre(paste(sample(letters,10), collapse = ", ")) 
    }) 

    output$boxContentUI2 <- renderUI({ 
    input$titleBtId 
    pre(paste(sample(LETTERS,10), collapse = ", ")) 
    }) 
} 

shinyApp(ui = ui, server = server) 
相關問題