闪亮:通过单击 valueBox 触发弹出窗口
Shiny: Trigger a popup by clicking a valueBox
我想通过单击 valueBox
在弹出窗口 window 中显示 table 数据。 valueBox
本身应该作为 actionButton
.
当我单击 valueBox
时,它应该在弹出窗口 window 中呈现 table,如下图所示。
任何人都可以帮助这个代码吗?
我的代码:
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)
您可以使用 shinyjs
创建一个 onclick
事件。因此,您需要在 ui 中添加 useShinyjs()
,这可以通过将 ui 包装在 tagList
中来实现。
单击具有给定 ID 的元素时,将在您的服务器中触发 onclick
函数。所以你还需要给valueBox
一个ID。我决定用 ID 将其包装在 div
中。
下一部分是在触发 onclick
事件时创建一个弹出窗口。您可以使用 shinyBS
.
中的 showModal
函数来执行此操作
工作示例
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)
这是另一个没有 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)
我想通过单击 valueBox
在弹出窗口 window 中显示 table 数据。 valueBox
本身应该作为 actionButton
.
当我单击 valueBox
时,它应该在弹出窗口 window 中呈现 table,如下图所示。
任何人都可以帮助这个代码吗?
我的代码:
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)
您可以使用 shinyjs
创建一个 onclick
事件。因此,您需要在 ui 中添加 useShinyjs()
,这可以通过将 ui 包装在 tagList
中来实现。
单击具有给定 ID 的元素时,将在您的服务器中触发 onclick
函数。所以你还需要给valueBox
一个ID。我决定用 ID 将其包装在 div
中。
下一部分是在触发 onclick
事件时创建一个弹出窗口。您可以使用 shinyBS
.
showModal
函数来执行此操作
工作示例
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)
这是另一个没有 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)