我想通过单击valueBox
在弹出窗口中显示数据表。 valueBox
本身应作为actionButton
使用。
当我单击valueBox
时,它应该在弹出窗口中呈现一个表格,如下图所示。
任何人都可以提供此代码帮助吗?
我的代码:
library(shiny)
library(shinydashboard)
data <- iris
ui <- dashboardPage(
dashboardHeader(title = "Telemedicine HP"),
dashboardSidebar(),
dashboardBody(
fluidRow(
valueBox( 60, subtitle = tags$p("Attended", style = "font-size: 200%;"),
icon = icon("trademark"), color = "purple", width = 4,
href = NULL))))
server <- function(input,output){
}
shinyApp(ui, server)
答案 0 :(得分:0)
您可以使用onclick
创建一个shinyjs
事件。因此,您需要在ui中添加useShinyjs()
,可以通过将ui包装在tagList
中来完成。
当单击具有给定ID的元素时,将在您的服务器中触发onclick
函数。因此,您还需要给valueBox
提供一个ID。我决定将其包装在具有ID的div
中。
下一部分是在触发onclick
事件时创建一个弹出窗口。您可以使用showModal
中的shinyBS
函数来完成此操作。
工作示例
library(shiny)
library(shinydashboard)
library(shinyjs)
library(shinyBS)
data <- iris
ui <- tagList(
useShinyjs(),
dashboardPage(
dashboardHeader(title = "Telemedicine HP"),
dashboardSidebar(),
dashboardBody(
fluidRow(
div(id='clickdiv',
valueBox(60, subtitle = tags$p("Attended", style = "font-size: 200%;"), icon = icon("trademark"), color = "purple", width = 4, href = NULL)
)
)
)
)
)
server <- function(input, output, session){
onclick('clickdiv', showModal(modalDialog(
title = "Your title",
renderDataTable(data)
)))
}
shinyApp(ui, server)
答案 1 :(得分:0)
这是没有shinyjs
library(shiny)
library(shinydashboard)
library(shinyBS)
data <- iris
ui <- tagList(
dashboardPage(
dashboardHeader(title = "Telemedicine HP"),
dashboardSidebar(),
dashboardBody(
fluidRow(
div(id='clickdiv',
valueBox(60, subtitle = tags$p("Attended", style = "font-size: 200%;"), icon = icon("trademark"), color = "purple", width = 4, href = NULL)
)
),
bsModal("modalExample", "Data Table", "clickdiv", size = "large",dataTableOutput("table"))
)
)
)
server <- function(input, output, session){
output$table <- renderDataTable({
head(data)
})
}
shinyApp(ui, server)