html - 如何在 R 闪亮的 modalDialog() 函数的标题中添加背景颜色和图标?
问题描述
我有以下代码。
library(shiny)
library(dplyr)
library(DT)
app <- shinyApp(
ui = fluidPage(
tags$head(tags$style("#modal1 .modal-header {background-color: #339FFF}")),
DT::dataTableOutput("mydatatable")
),
server = shinyServer(function(input, output, session) {
mycars <- reactive({ head(mtcars)})
output$mydatatable = DT::renderDataTable(mycars(), selection = 'single',
rownames = FALSE, options = list(dom = 't'))
selected_row <- reactiveVal(value = NULL)
observeEvent(input$mydatatable_rows_selected,{
selected_row(input$mydatatable_rows_selected)
})
observeEvent(selected_row(), {
showModal(tags$div(id="modal1", modalDialog(
title = tags$a(style = "color: black", icon('robot'), br(), 'Query Text'),
tags$div(HTML(paste(
"cyl = ",
tags$span(mycars()$cyl[selected_row()],
style = paste("color:", if (mycars()$mpg[selected_row()] > 21) {
"red"
} else {
"blue"
})
)
)))
)))
})
})
)
app
我的目标是更改标题的背景颜色,类似于我在 modalDialog() 中的 cyl 值的颜色,并且如果 cyl <= 6 并且如果 cyl > 6 则在标题中添加一个机器人图标,如果 cyl > 6 则添加一个用户图标,如下图所示。
怎么可能在 R 闪亮?提前感谢=)
解决方案
library(shiny)
library(dplyr)
library(DT)
app <- shinyApp(
ui = fluidPage(
uiOutput("code"),
DT::dataTableOutput("mydatatable")
),
server = shinyServer(function(input, output, session) {
mycars <- reactive({ head(mtcars)})
output$mydatatable = DT::renderDataTable(mycars(), selection = 'single',
rownames = FALSE, options = list(dom = 't'))
selected_row <- reactiveVal(value = NULL)
observeEvent(input$mydatatable_rows_selected,{
selected_row(input$mydatatable_rows_selected)
})
output$code <- renderUI({
validate(need(!is.null(selected_row()) & nrow(mycars()) > 0, " "))
if (mycars()$mpg[selected_row()] > 21) {
tags$head(tags$style("#modal1 .modal-header {background-color: #FFD8D8; text-align: center}"))
} else {
tags$head(tags$style("#modal1 .modal-header {background-color: #339FFF; text-align: center}"))
}
})
f <- function(){
if (mycars()$mpg[selected_row()] > 21){
tags$a(style = "color: black", icon('robot'), br(), 'Query Text')
} else{
tags$a(style = "color: black", icon('users'), br(), 'Query Text')
}
}
observeEvent(selected_row(), {
showModal(tags$div(id="modal1", modalDialog(
title = f(),
tags$div(HTML(paste(
"cyl = ",
tags$span(mycars()$cyl[selected_row()],
style = paste("color:", if (mycars()$mpg[selected_row()] > 21) {
"red"
} else {
"blue"
})
)
)))
)))
})
})
)
app
推荐阅读
- amazon-cloudwatch - AWS CloudWatch 指标警报无法通过 SNS 通知
- javascript - 为什么我添加到数组中的元素替换了我之前添加的元素?
- html - 图像溢出它们的容器
- python - 将 Callable 连接到类
- c# - 如何在单个 Windows 窗体 DataGridViewComboBoxCell 中激活下拉箭头
- objective-c - 在 MacOs 项目上存档时,如何将嵌入式第三方框架复制到用户库/框架文件夹或项目文件夹?
- augmented-reality - 100 次中有 1 次未在 ARSCNView 中显示 SceneKit 对象
- python - 使用 pip 安装 mecab-python3 的问题
- php - Laravel 刀片图片展示
- ruby - 如何使用 XPath 检索字符串而不返回空错误